Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过正则表达式查找某些字符串,但当特殊字符串不存在时';t毗邻?_Python_Regex - Fatal编程技术网

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>