如何替换找到的模式中的子字符串,但保留其余部分?
(编辑:真实情况当然比下面的例子更复杂,我必须匹配xml标签内的出现.这就是为什么我必须使用正则表达式!)
假设我想将单词中字母"X"的出现更改为字母"Z".
我想要
aaXaa aaX Xaa
成为
aaZaa aaZ Zaa
查找包含"x"的单词的出现不是问题,如下所示:
[^ X\s] X [^\s]
但正常的preg_match取代了完整的匹配,我希望模式中的任何东西除了"X"以保持不变.
这是在PHP中实现这一目标的最佳方法吗?
sou*_*rge 14
如果你的正则表达式只与相关部分匹配,那么替换完整匹配(如preg_replace('/X/', 'Z', $string))就没有问题.
但是如果你需要正则表达式来包含不应该被替换的部分,你需要捕获它们并将它们插回:
preg_replace('/(non-replace)X(restofregex)/', '$1Z$2', $string);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9006 次 |
| 最近记录: |