Python 正则表达式:如何删除冗余子字符串
我有一根绳子。此字符串末尾有多余的文本。我想删除所有冗余文本(冗余文本的第一个和第二个实例)。如何找到字符串末尾的所有重复文本并将其删除 在我的示例中,我正在处理一个字符串,该字符串也有一个我要删除的前缀。例如,我想:Python 正则表达式:如何删除冗余子字符串,python,regex,Python,Regex,我有一根绳子。此字符串末尾有多余的文本。我想删除所有冗余文本(冗余文本的第一个和第二个实例)。如何找到字符串末尾的所有重复文本并将其删除 在我的示例中,我正在处理一个字符串,该字符串也有一个我要删除的前缀。例如,我想:前缀abcde123de123返回abc 重复的子字符串的长度可以不同。所以我想:前缀a b c 123 c 123返回a b 我试着把这个和 import re re.sub( r'prefix ([a-z ]*)\2([a-z ]* \d*)$', r'\1'
前缀abcde123de123
返回abc
重复的子字符串的长度可以不同。所以我想:
前缀a b c 123 c 123
返回a b
我试着把这个和
import re
re.sub(
r'prefix ([a-z ]*)\2([a-z ]* \d*)$',
r'\1',
'prefix a b c 123 c 123'
)
但这当然会导致转发引用错误,因为我在创建\2之前引用了它的内容
我正在用Python编写这个正则表达式。3.7.您可以使用此正则表达式进行搜索:
^prefix\s+(.*)(.+?)\2+$
并使用:r'\1'
进行替换
Python代码:
import re
r = re.sub(
r'^prefix\s+(.*?)(.+?)\2+$',
r'\1',
'prefix a b c 123 c 123'
)
print (r)
正则表达式详细信息:
import re
r = re.sub(
r'^prefix\s+(.*?)(.+?)\2+$',
r'\1',
'prefix a b c 123 c 123'
)
print (r)
:开始^
:匹配文本prefix\s+
,后跟1+空格prefix
:匹配捕获组#1中的0个或多个字符(.*)
;匹配捕获组#2中的一个或多个任意字符(.+?)
:匹配第2组的1次或多次重复\2+
:结束$
\2
放在第二组后面,字符串末尾之前
在更换使用组1中
prefix ([a-z ]*)([a-z ]* \d*)\2$
输出
a b
可能是
re.sub(r'前缀([a-z]*)([a-z]*\d*)\2*$,r'\1',文本)
?看见或者,prefix([a-z]*)([a-z]*\d*)\2+$
这很有效,谢谢!