表达式匹配以字符串开头,但不包含其他字符串的字符串?

时间:2015-07-11 00:21:26

标签: regex

如何构造与这些匹配的表达式:

start?foo=bar
start.php
starter

但不是这些

dontmatch
start?foo=dontmatch
notstart?foo=bar

我打算在.htaccess文件中使用它。

2 个答案:

答案 0 :(得分:0)

这个表达怎么样:

\bstart.*$(?<!dontmatch)

<强> Online Demo

答案 1 :(得分:0)

^(?!.*dontmatch)start
如果

匹配

  • 找到了文字start
  • 在一行的开头(^ anchor的用途,假设正则表达式以多行模式运行),
  • 除非文字dontmatch出现在同一行的任何地方((?!...) negative lookahead assertion所针对的内容)。

匹配仅包含文字start - 如果您想要返回整行,请在结尾处添加.*