【发布时间】:2023-06-13 23:59:02
【问题描述】:
考虑以下文本替换的正则表达式规则
$mystring = preg_replace('/'.$myitem.'[ab]/', "", $mystring);
这将在$mystring 中将$myitem 替换为空白字符,当且仅当它后跟a 或b。
我的要求不是替换为空白字符而是替换为:
a 如果遇到a 或b 如果遇到b。
我不能在两次迭代中做到这一点,例如:
$mystring = preg_replace('/'.$myitem.'a/', "a", $mystring);
$mystring = preg_replace('/'.$myitem.'b/', "b", $mystring);
因为第一次迭代也会对$mystring 产生一些副作用,在这种情况下使第二条规则无用。
有没有办法在一次迭代中进行这种条件替换?
根据答案进行编辑
好的,我的问题过于简单了,但这里是实际的正则表达式规则
'(?:(?<=^|\s)(?=\S|$)|(?<=^|\S)(?=\s|$))'.$myitem.'(?:(?<=^|\s)(?=\S|$)|(?<=^|\S)(?=\s|$)) *([ab])'
现在在这种情况下,当我看到一些条件分组时,如何计算反向引用数。
【问题讨论】:
标签: regex