正则表达否定整个词?

时间:2014-05-18 17:11:19

标签: java regex

  String test1 = "This is my test string";

我想匹配一个不包含" test"

的字符串

我可以用

做到
 Pattern p = Pattern.compile(".*?^(test).*?")

并且它适用于Regular Expressions and negating a whole character group等大多数网站     建议^(?!.*test).*$对我不起作用。

根据我的理解^(test)已经足够了,为什么需要^(?!.*test).*$

2 个答案:

答案 0 :(得分:16)

您需要以下内容。

^(?:(?!test).)*$

正则表达式:

^               the beginning of the string
(?:             group, but do not capture (0 or more times)
 (?!            look ahead to see if there is not:
  test          'test'
 )              end of look-ahead
 .              any character except \n
)*              end of grouping
$               before an optional \n, and the end of the string

使用^(test)时,它只在字符串的开头寻找 test ,而不是否定它。

否定^运算符只能在字符类[^ ]内部工作,但整个单词在字符类中不起作用。例如,[^test]匹配除以下字符之外的所有字符:(test

答案 1 :(得分:-1)

.* =任何零次或多次

正则表达式:

^((?!test).)*$

我误解了它。现在我认为它会起作用。