gpt4 book ai didi

python - 正则表达式:如何删除多余的子字符串

转载 作者:行者123 更新时间:2023-12-02 02:23:43 25 4
gpt4 key购买 nike

我有一根绳子。该字符串末尾有多余文本。我想删除所有冗余文本(冗余文本的第一个和第二个实例)。如何找到字符串末尾的所有重复文本并将其删除?

在我的示例中,我正在使用一个字符串,该字符串也有一个要删除的前缀。例如,我想要: 前缀 a b c d e 123 d e 123 返回 a b c

重复子字符串的长度可以不同。所以我想要: 前缀 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 之前引用了\2 的内容。

我正在Python中做这个正则表达式。 3.7.

最佳答案

您可以使用此正则表达式进行搜索:

^prefix\s+(.*?)(.+?)\2+$

并使用:r'\1' 进行替换。

RegEx Demo

Python 代码:

import re

r = re.sub(
r'^prefix\s+(.*?)(.+?)\2+$',
r'\1',
'prefix a b c 123 c 123'
)
print (r)

Code Demo

正则表达式详细信息:

  • ^:开始
  • prefix\s+:匹配文本 prefix 后跟 1 个以上空格
  • (.*?):匹配捕获组 #1 中的 0 个或多个任意字符
  • (.+?);匹配捕获组 #2 中的 1 个或多个任意字符
  • \2+:匹配组 #2 的 1 次或多次重复
  • $:结束

关于python - 正则表达式:如何删除多余的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66044415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com