繁体   English   中英

Python-替换正则表达式的一部分?

[英]Python - Replace part of regex?

我有以下代码:

import re
s = "Example {String}"
replaced = re.sub('{.*?}', 'a', s)
print replaced

哪些打印:

Example a

有没有办法修改正则表达式以便打印:

Example {a}

那就是我只想替换。*部分并保留所有周围的字符。 但是,我需要周围的字符来定义我的正则表达式。 这可能吗?

做到这一点的两种方法,要么捕获您的前缀和后缀,要么使用lookbehinds和lookahead。

# capture
s = "Example {String}"
replaced = re.sub(r'({).*?(})', r'\1a\2', s)

# lookaround
s = "Example {String}"
replaced = re.sub(r'(?<={).*?(?=})', r'a', s)

如果您捕获了前缀前后的内容,则可以使用\\{capture_num} (例如\\1\\2替换使用这些捕获组。

如果使用环顾四周,则基本上不需要匹配这些前/后修复程序,只需断言它们在那里 因此,替换仅在两者之间交换字母。

当然,对于这个简单的子对象,更好的解决方案可能是:

re.sub(r'{.*?}', r'{a}', s)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM