为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千万里不及你 2021-10-17 15:56:10
我需要编写不应该包含单词 [apple] 并且也不应该包含点 [.] 的正则表达式一些苹果 - 假其他一些字符串 - 真其他一些字符串。- 错误的我在想^((?!apple).)*$,排除整个词
查看完整描述

2 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

s.matches("(?s)(?!.*apple)[^.]*")

请参阅正则表达式演示(该模式针对单个多行字符串进行了调整,请勿在演示中使用该模式)。

正则表达式的(?s)^(?!.*apple)[^.]*$意思是:

  • (?s)-匹配任何字符的Pattern.DOTALL修饰符,.包括换行符

  • ^- 字符串的开始(隐含在.matches()

  • (?!.*apple)- 负前瞻,紧靠当前位置的右侧(在字符串开头),匹配任何字符,尽可能多,后跟apple子字符串(如果找不到模式,则不匹配)

  • [^.]* - 除点以外的 0+ 个字符

  • $- 字符串结尾(隐含在.matches()


查看完整回答
反对 回复 2021-10-17
?
拉莫斯之舞

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


查看完整回答
反对 回复 2021-10-17
  • 2 回答
  • 0 关注
  • 205 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信