我需要编写不包含单词[apple]的正则表达式 并且也不应包含点[。]
有些苹果-假
其他一些字符串-true
其他一些字符串。 -错误
我在考虑^((?!apple).)*$
,它排除了整个单词
答案 0 :(得分:0)
您需要包含点作为要排除的字符。由于.
是正则表达式中的控制字符,因此必须对其进行转义:
^((?!apple|\.).)*$
在这种情况下,只要没有匹配“ apple”或“。”的模式,我们就告诉它匹配任何字符的0个或多个。字符串中的任何位置。
此表达式可以按如下方式进行解构:
^ = Start of string
( = Start of capture group
( = Start of capture group
?! = Negative Look ahead
apple = First thing to look for
| = Logical Or
\. = Match a literal . character
) = End of capture group
. = Match any character
) = End of capture group
* = Match zero or more
$ = End of String
答案 1 :(得分:0)
使用
s.matches("(?s)(?!.*apple)[^.]*")
请参见regex demo(该模式针对单个多行字符串进行了调整,请在演示中不要使用该模式)。
正则表达式为(?s)^(?!.*apple)[^.]*$
,表示:
(?s)
-一个Pattern.DOTALL
修饰符,使.
匹配包含换行符的任何字符^
-字符串的开头(在.matches()
中隐含)(?!.*apple)
-当前行右边(在字符串开头)的否定超前查询,它会尽可能地匹配所有字符,后跟apple
子字符串(如果模式未找到,没有匹配项)[^.]*
-除点以外的0多个字符$
-字符串结尾(在.matches()
中隐含)