[英]Regex negative character class and dot-asterisk
我需要获取以下正则表达式才能正常工作,但遇到问题。 是的,它正在解析HTML。 不,没有更好的选择。
这是正则表达式:
test(.*)\/[^s].*(=|\/|Z)
我正在使用“ U”修饰符(因此很不协调),而“ \\”是我的转义符号。
插入此模式:
test.com/sch/anythingwhateverZhello
当我认为不应该时,结果是一场比赛。 捕获是“ .com / sch”和“ Z”,尽管我(认为)我特别告诉过它,它应该A)仅捕获第一个“ /”,因此应该是“ .com”,和B)如果“ /”后的第一个字母为“ s”,则不匹配。 有趣的是-并且可能是我的问题的根源-是当我删除[^ s]时,捕获现在可以正常工作了。 将其插入后,星号会飞到第二个“ /”,这没有任何意义。 我尝试在星号后加一个问号,以作为正则表达式的双重提示,即它不应贪婪,但这没什么区别。
好的,所以不是否定的字符类(我真的不想只排除“ s”;我真的想特别排除“ sch”),接下来我尝试了否定的前瞻:
test(.*)\/(?!sch).*(=|\/|Z)
同样的问题! 匹配,第一个捕获是“ .com / sch”。
有什么想法我的失误在这里吗? (我一直在http://www.rexv.org/上使用RexV2 regex验证器,所以我想到该引擎中可能存在错误,但可以在实际环境中复制此问题)。
test(.*)
,这是您的问题。 也许应该是test([^ /] *)?
它的方式与test.com/sch
匹配,因为.
表示任何字符,然后/
,然后在anythingwhateverZhello
都没有s
,因此它一直在继续。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.