繁体   English   中英

带有对或字符的python re.sub()

[英]python re.sub() with pair or characters

我试图抓住一个被“!并用”!_“替换第一个”!“的字符串。

例如:str(!test!)。strip() - > str(!_ test!)。strip()

这是我到目前为止的代码:

print re.sub(r'!.*?!','!_', 'str(!test!).strip()')

使用此代码我抓得太多,结果是:str(!_)。strip()

关于如何对第一个“!”进行归零的任何想法。 或者,有没有办法在“!!”中抓取字符串 然后添加“!_”+“!” 那个字符串?

print re.sub(r'!(?=.*?!)', '!_', 'str(!test!).strip()')

使用积极的前瞻。

print re.sub(r'!(.*?)!', r'!_\1!', 'str(!test!).strip()')

使用反向引用。

排除! 来自!s之间的字符:使用[^!]代替.

然后,捕获要保留的RE部分() ,并在替换字符串中,使用\\1再次插入它。

print re.sub(r'!([^!]*!)', r'!_\1', 'str(!test!).strip()')

您需要使用括号将“单词”的后半部分分组,并在替换字符串\\g<1>使用该组。

re.sub(r'!(.*?!)', '!_\g<1>', 'str(!test!).strip()')

暂无
暂无

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

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