我有一个相同的问题,但在链接PCRE2(regex101.com):
Regexp find a match with priority order?
我有:
/.*?(hello)|.*?(hey)|.*?(hi)/ms
hi hey hello
但问题是,当它找到hello
时,它被存储在组1中,当它在组2中找到hey
时,当它在组3中找到hi
时,我希望只使用组1。
我该怎么得到这个?
https://regex101.com/r/bc8XQE/1
我有一个相同的问题,但在链接PCRE2(regex101.com):
Regexp find a match with priority order?
我有:
/.*?(hello)|.*?(hey)|.*?(hi)/ms
hi hey hello
但问题是,当它找到hello
时,它被存储在组1中,当它在组2中找到hey
时,当它在组3中找到hi
时,我希望只使用组1。
我该怎么得到这个?
https://regex101.com/r/bc8XQE/1
1条答案
按热度按时间kadbb4591#
使用PCRE,而不是3个不同的组,您可以使用您的模式与3个替代方案,然后使用
\K
忘记到目前为止匹配的内容。字边界
\b
防止部分字匹配。请参见regex demo。
如果你真的必须有组1,那么你可以使用分支重置组:
另见regex demo。