preg_match_all:为两个子模式指定相同的名称

时间:2017-03-31 15:07:18

标签: php preg-match-all

我想使用正则表达式来匹配两个不同的子模式,并使用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"

感谢您的帮助!

1 个答案:

答案 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