/th?u(e|r)sday/
这个星期二,星期四,也是星期二和星期四.有没有办法在正则表达式中指出一个部分应该只匹配,如果前一个部分匹配…所以我想象一个潜在的语法,如…(?#:pattern)其中#是来自捕获组的数字,如果捕获的组被捕获,则包含模式,否则跳过.如果未捕获#th组,则采用类似的模式(!#:pattern).这个发明的语法是为了演示我想要做的事情.有了这个发明的语法,我可以像这样解决上面的问题……
/t(h)?u(!1:e)(?1:r)sday/
在regex中是否有任何这样的语法来实现这种类型的引用?
解决方法
/t(h)?u(?(1)r|e)sday/
显然这不是最好的例子,因为/ t(hur | ue)sday /等效且更短,但有些情况下这更有用.
查看this advanced regex reference page表中的倒数第二个元素,以及有关条件here的其他信息.
>语法:
(?(1)then|else)
>说明:
If the first capturing group took part in the match attempt thus far,the “then” part must match for the overall regex to match. If the first capturing group did not take part in the match,the “else” part must match for the overall regex to match.
>示例:
(a)?(?(1)b | c)匹配babxcac中的ab,第一个c和第二个c
根据同一页面,条件由JGsoft engine,Perl,PCRE和.NET framework支持.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。