Regex 正则表达式-匹配整个字符串,除非
我需要编写一个正则表达式,它将匹配字符串中的所有内容,除非其中包含某个单词。以这个字符串为例:Regex 正则表达式-匹配整个字符串,除非,regex,Regex,我需要编写一个正则表达式,它将匹配字符串中的所有内容,除非其中包含某个单词。以这个字符串为例: http://12.34.567.890/sqlbuddy 匹配所有内容的表达式为: ^.*$ …需要对其进行修改,以便它在包含单词“sqlbuddy”时与字符串完全不匹配。我原以为负面展望可以做到,但这对我不起作用 例如,我尝试了这个,但不起作用: ^(?!sqlbuddy).*$ 我应该如何修改它?此外,这对我来说很有效:字符串“sqlbuddy”的位置无关紧要 ^((?!sqlbuddy)
http://12.34.567.890/sqlbuddy
匹配所有内容的表达式为:
^.*$
…需要对其进行修改,以便它在包含单词“sqlbuddy”时与字符串完全不匹配。我原以为负面展望可以做到,但这对我不起作用
例如,我尝试了这个,但不起作用:
^(?!sqlbuddy).*$
我应该如何修改它?此外,这对我来说很有效:字符串“sqlbuddy”的位置无关紧要
^((?!sqlbuddy)。*$
该示例不起作用,因为它假定sqlbuddy
位于字符串的开头。您需要将其更改为以下内容,以便sqlbuddy
可以出现在字符串中的任何位置:
^(?!.*sqlbuddy.*).*$
但是,如果您真的只想检查字符串是否包含给定的单词,那么可能需要一个“http://12.34.567.890/sqlbuddy“.contains(“sqlbuddy”)
就足够了。…另外(对于其他人),如果您只想在[long]字符串的特定位置搜索(包含多个匹配项的长文本),您可以使用:
first_part_of_string(?!.*sqlbuddy.*)second_part_of_string
或者,更为宽容:
first_part_of_string.*(?!.*sqlbuddy.*).*second_part_of_string
非常感谢。我将它与mod_rewrite一起使用,因此无法使用.contains(),但它可以工作,下面的另一个答案也是如此。然而,由于某些原因,它与使用@Allen的正则表达式测试仪不匹配,请查看rubular,这是我在正则表达式测试中使用的,我非常喜欢它。+1但有一点小小的调整:您不需要
*
之后的sqlbuddy
。这就足够了:(?m)^(?。*?sqlbuddy)。*$
或(?m)^(?!sqlbuddy)。*$
这取决于您是想变懒还是想回溯。