正则表达式不应包含整个单词和点

我需要编写不应该包含单词 [apple] 并且也不应该包含点 [.] 的正则表达式

一些苹果 - 假

其他一些字符串 - 真

其他一些字符串。- 错误的

我在想^((?!apple).)*$,排除整个词


千万里不及你
浏览 206回答 2
2回答

ITMISS

用s.matches("(?s)(?!.*apple)[^.]*")请参阅正则表达式演示(该模式针对单个多行字符串进行了调整,请勿在演示中使用该模式)。正则表达式的(?s)^(?!.*apple)[^.]*$意思是:(?s)-匹配任何字符的Pattern.DOTALL修饰符,.包括换行符^- 字符串的开始(隐含在.matches())(?!.*apple)- 负前瞻,紧靠当前位置的右侧(在字符串开头),匹配任何字符,尽可能多,后跟apple子字符串(如果找不到模式,则不匹配)[^.]* - 除点以外的 0+ 个字符$- 字符串结尾(隐含在.matches())

拉莫斯之舞

您需要包含点作为要排除的字符。由于.是正则表达式中的控制字符,因此必须对其进行转义:^((?!apple|\.).)*$在这种情况下,我们告诉它匹配 0 个或多个任何字符,只要没有匹配 'apple' 或 '.' 的模式。字符串中的任何位置。这个表达式可以解构如下:^     = Start of string(     = Start of capture group(     = Start of capture group?!    = Negative Look aheadapple = 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java