2 回答
TA贡献1871条经验 获得超8个赞
用
s.matches("(?s)(?!.*apple)[^.]*")
请参阅正则表达式演示(该模式针对单个多行字符串进行了调整,请勿在演示中使用该模式)。
正则表达式的(?s)^(?!.*apple)[^.]*$
意思是:
(?s)
-匹配任何字符的Pattern.DOTALL
修饰符,.
包括换行符^
- 字符串的开始(隐含在.matches()
)(?!.*apple)
- 负前瞻,紧靠当前位置的右侧(在字符串开头),匹配任何字符,尽可能多,后跟apple
子字符串(如果找不到模式,则不匹配)[^.]*
- 除点以外的 0+ 个字符$
- 字符串结尾(隐含在.matches()
)
TA贡献1820条经验 获得超10个赞
您需要包含点作为要排除的字符。由于.是正则表达式中的控制字符,因此必须对其进行转义:
^((?!apple|\.).)*$
在这种情况下,我们告诉它匹配 0 个或多个任何字符,只要没有匹配 'apple' 或 '.' 的模式。字符串中的任何位置。
这个表达式可以解构如下:
^ = 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
添加回答
举报