我想使用正则表达式来匹配两个不同的子模式,并使用PCRE_INFO_JCHANGED修饰符(?J)
这两个子模式彼此非常不同所以我必须使用|
来抓住它们
我通常做的是给两个模式一个不同的名称然后选择我想要的PHP,但我想知道它是否可能没有PHP
此处示例:https://3v4l.org/GEMeT(编辑感谢@JustOnUnderMillions )
第二个?P<number>
将始终捕获并替换第一个?P<number>
我想要的是什么:使用一个正则表达式捕获这两种模式,并使用相同的密钥number
Desired output :
Pattern 1
string(1) "1"
Pattern 2
string(1) "2"
感谢您的帮助!
答案 0 :(得分:0)
不要在这里使用preg_match_all
compile files('./libs/woogeenconference.jar') {
exclude group: 'okhttp', module: 'okhttp'
}
$regex = '/(?J)I wanna match pattern (?P<number>1) which is very different from pattern 2|(?P<number>2), again nothing to do with pattern 1 here/';
的结果:
preg_match
完全使用固定的正则表达式array(3) {
[0]=>
string(62) "I wanna match pattern 1 which is very different from pattern 2"
["number"]=>
string(1) "1"
[1]=>
string(1) "1"
}
:
'nothing similar' was not found in the orignal regex