正则表达式 – 正则表达式双方面组件
对不起令人困惑的标题,我想不出正确的措辞.我试图理解是否有一种方法可以使正则表达式匹配不同的字符串,具体取决于是否捕获了先前的捕获组.
/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) >说明:
>示例: (a)?(?(1)b | c)匹配babxcac中的ab,第一个c和第二个c 根据同一页面,条件由JGsoft engine,Perl,PCRE和.NET framework支持. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |