IAd*_*ter 83 regex regex-negation
例如,我有正则表达式(ma|(t){1})
.它匹配ma
和t
不匹配bla
.
我想否定正则表达式,因此必须匹配bla
,而不是ma
和t
,加入的东西此正则表达式.我知道我可以写bla
,但实际的正则表达式更复杂.
pol*_*nts 91
使用否定的外观: (?!
pattern
)
正面外观可用于断言模式匹配.否定的外观恰恰相反:它用于断言模式不匹配.一些风味支持断言; 一些人对外观等有所限制.
这些尝试是为玩具问题提出正则表达式解决方案作为练习; 如果你正在尝试学习各种使用外观的方法(嵌套它们,使用它们来捕获等),它们应该具有教育意义:
Ala*_*ore 50
假设您只想完全禁止与正则表达式匹配的字符串(即,mmbla
可以,但mm
不是),这就是您想要的:
^(?!(?:m{2}|t)$).*$
Run Code Online (Sandbox Code Playgroud)
(?!(?:m{2}|t)$)
是一个负面的先行 ; 它说"从当前位置开始,接下来的几个字符不是, mm
或者t
后面是字符串的结尾." 开头的锚点(^
)确保在字符串的开头应用前瞻.如果成功,.*
则继续并消耗字符串.
仅供参考,如果您使用的是Java的matches()
方法,那么您并不需要它^
和最终版本$
,但它们不会造成任何伤害.但是$
,前瞻性内部是必需的.
归档时间: |
|
查看次数: |
143255 次 |
最近记录: |