Python 如何通过正则表达式查找某些字符串,但当特殊字符串不存在时';t毗邻?
目的:在字符串中找到Python 如何通过正则表达式查找某些字符串,但当特殊字符串不存在时';t毗邻?,python,regex,Python,Regex,目的:在字符串中找到***,并将其替换,但在和相邻时排除 例如: ** asdf**adsfds <cente>**</center> <center>** </center> <center> ** </center> ** asdf**adsfds ** ** ** 在这种情况下,应更换1、2、3行,但不应更换4、5行。我做了一些正则表达式,它与这些东西负匹配:(*)\*\*(*) 任何帮助都将不胜感激。
***
,并将其替换,但在
和
相邻时排除
例如:
**
asdf**adsfds
<cente>**</center>
<center>** </center>
<center> ** </center>
**
asdf**adsfds
**
**
**
在这种情况下,应更换1、2、3行,但不应更换4、5行。我做了一些正则表达式,它与这些东西负匹配:(*)\*\*(*)
任何帮助都将不胜感激。您可以在regex中使用如下的负环视进行反向匹配。供进一步阅读
^((?!\)****((?!\))*
这可能是通过消极的lookaheads/lookbehinds来实现的,但要正确处理这些问题很难。以下是我的建议:
import re
string = """**
asdf**adsfds
<center>**</center>
<center>** </center>
<center> ** </center>"""
temp = 'specialuniquestring'
string = re.sub(r'(<center>\s*)\*\*(\s*</center>)', r'\1%s\2' % temp, string)
string = string.replace('**', '+++')
string = string.replace(temp, '**')
print(string)
您不需要转义
。可能吧,但我想检查一下整个中心标记。:)您忘记了结束标记中的/
。/
也不需要转义。此外,这并不能替代**O
,但从OP的问题来看,似乎应该这样做。
import re
string = """**
asdf**adsfds
<center>**</center>
<center>** </center>
<center> ** </center>"""
temp = 'specialuniquestring'
string = re.sub(r'(<center>\s*)\*\*(\s*</center>)', r'\1%s\2' % temp, string)
string = string.replace('**', '+++')
string = string.replace(temp, '**')
print(string)
+++
asdf+++adsfds
<center>**</center>
<center>** </center>
<center> ** </center>
**
asdf**adsfds
<center>specialuniquestring</center>
<center>specialuniquestring </center>
<center> specialuniquestring </center>