Java 正则表达式来否定整个单词?
我想匹配一个不包含“test”的字符串 我可以用它来做Java 正则表达式来否定整个单词?,java,regex,Java,Regex,我想匹配一个不包含“test”的字符串 我可以用它来做 String test1 = "This is my test string"; 它可以工作,但在大多数网站,如 ^(?。*test)。*$建议对我不起作用 根据我的理解,^(test)就足够了,那么为什么需要^(?...*test.*$呢?您需要以下内容 Pattern p = Pattern.compile(".*?^(test).*?") 正则表达式: ^(?:(?!test).)*$ 使用^(test),它只在字符串的开
String test1 = "This is my test string";
它可以工作,但在大多数网站,如
^(?。*test)。*$
建议对我不起作用
根据我的理解,
^(test)
就足够了,那么为什么需要^(?...*test.*$
呢?您需要以下内容
Pattern p = Pattern.compile(".*?^(test).*?")
正则表达式:
^(?:(?!test).)*$
使用^(test)
,它只在字符串的开头查找test,而不是求反
否定
^
运算符只在字符类[^]
内部工作,但整个单词在字符类内部不工作。例如,[^test]
匹配除以下字符以外的任何字符:(t
,e
,s
,t
)*
=任何零次或多次
正则表达式:
^ 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)?@user3198603求反的
^
运算符只在字符类中起作用,例如[^t]
将接受任何不是字母t的字符。但这并不适用于整个词。也就是说,[^test]
将接受任何不是t、e或s的字母。在字符类之外,^
是行开头的锚点。\v^(%(test)@.)*$
对于Vim中的正则表达式,您认为^
在这里意味着什么?如果(!yourString.contains(“test”),只使用会更容易吗
顺便说一句,有249个单词包含测试
例如,最聪明的竞赛讨厌不可测试性这接受任何包含测试的内容,而不是要求。公平地说,附录“然后翻转结果”,这将是一个非常好的答案-可能表明OP不应该使用正则表达式。
^((?!test).)*$