String test1 = "This is my test string";
我想匹配一个不包含" test"
的字符串我可以用
做到 Pattern p = Pattern.compile(".*?^(test).*?")
并且它适用于Regular Expressions and negating a whole character group等大多数网站
建议^(?!.*test).*$
对我不起作用。
根据我的理解^(test)
已经足够了,为什么需要^(?!.*test).*$
?
答案 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]
匹配除以下字符之外的所有字符:(t
,e
,s
,t
)
答案 1 :(得分:-1)
.*
=任何零次或多次
正则表达式:
^((?!test).)*$
我误解了它。现在我认为它会起作用。