我想使用正则表达式匹配每个以
例如,对于输入
为此,我用以下正则表达式编写了这个程序:https://regex101.com/r/P9rUqU/2/
它可以找到所有的子字符串,但有些是重复的(请注意组的起始和结束位置)。
我可以根据组的起始和结束位置筛选组,但我想知道是否可以通过更改正则表达式来仅返回唯一组。
我能否更改这个正则表达式以仅匹配与其他不同的组?如果可以,如何进行更改?我可以接受如何解决这个问题的建议。
w
开头并以 d
结尾的子字符串。例如,对于输入
worldworld
,它应该返回 ('worldworld', 'world', 'world')
。(注意:有两个 world
,但它们是不同的,因为它们在字符串中的位置不同)为此,我用以下正则表达式编写了这个程序:https://regex101.com/r/P9rUqU/2/
import re
s = '''worldworld'''
for g in re.finditer(r'(?=(w.*d))(?=(w.*?d))', s):
print(g.start(1), g.end(1), g[1])
print(g.start(2), g.end(2), g[2])
print('-' * 40)
这将打印:
0 10 worldworld
0 5 world
----------------------------------------
5 10 world
5 10 world
----------------------------------------
它可以找到所有的子字符串,但有些是重复的(请注意组的起始和结束位置)。
我可以根据组的起始和结束位置筛选组,但我想知道是否可以通过更改正则表达式来仅返回唯一组。
我能否更改这个正则表达式以仅匹配与其他不同的组?如果可以,如何进行更改?我可以接受如何解决这个问题的建议。
('worldworld','world','world')
,但是您又声明不想要重复项。这到底是哪一个? - Paolowdddd
显示另一个问题(它永远不会匹配wdd
或wddd
前缀)。改用一对嵌套的string.find()
循环,如何? - Tim Peters.*
和.*?
。那么worldworldworld
呢?我猜你期望匹配所有的组合,对吗?我认为这不是正则表达式最好的应用场景。 - 41686d6564 stands w. Palestine