假设我想在一个特定表达式的前缀中添加一个字符,例如\.
在sed,它看起来像这样.
echo '__^^^%%%__FooBar' | sed 's/[_^%]/\\&/g'
Run Code Online (Sandbox Code Playgroud)
请注意,该&字符用于表示原始匹配表达式.
我已经查看了正则表达式文档和正则表达式howto,但是我没有看到&可用于在匹配表达式中替换的字符的等价物.
我发现的唯一解决方法是使用额外的一组()来对表达式进行分组,然后引用该组,如下所示.
import re
line = "__^^^%%%__FooBar"
print re.sub("([_%^$])", r"\\\1", line)
Run Code Online (Sandbox Code Playgroud)
是否有一种干净的方式来引用整个匹配的表达式而不创建额外的组?
来自文档:
反向引用
\g<0>替代了RE匹配的整个子字符串.
例:
>>> print re.sub("[_%^$]", r"\\\g<0>", line)
\_\_\^\^\^\%\%\%\_\_FooBar
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |