我的要求如下:
因此,我用PHP编写了以下正则表达式。它包含一个反向引用条件:
$ptn = '@' . // PHP delimiter
'(dog\s*)?' . // dog
'cat\s*' . // cat
'(?(1)dog)' . // backreference cond
'@'; // PHP delimiter该regex符合要求1:
$str1b = 'cat';
preg_match($ptn, $str1b, $matches);
print_r($matches);交单的目的是:
数组( => cat )
该regex还满足要求2:
$str1a = 'dog cat dog';
preg_match($ptn, $str1a, $matches);
print_r($matches);交单的目的是:
阵列( =>狗猫狗1 =>犬)
但是,我想问为什么数组包含两个元素?是因为正则表达式有两个消耗子表达式吗?
关于需求3,下面的数据测试它:
$str1c = 'dog cat';
preg_match($ptn, $str1c, $matches);
print_r($matches);这里的运单是:
数组( => cat )
在这里,我想问:
这是代码。
我只考虑用PHP来解决这个问题。
发布于 2021-04-20 17:11:18
然而,如果"cat“一词前面有”狗“一词,那么"cat”也必须被“狗”所取代,这三个词都必须匹配。
根据我的解释,这个准则也适用于你:
\b(?:dog cat dog|(?<!\bdog )cat)\bRegEx详细信息:
\b:字界(?::启动非捕获组dog cat dog:Match dog cat dog|(?<!\bdog )cat:如果前面没有单词dog和空格,则匹配cat):端非捕获组\b:字界发布于 2021-04-22 08:45:22
https://stackoverflow.com/questions/67179408
复制相似问题