查找分隔符之间的所有匹配项



我试图找到!!之间的所有单个字母。

例如,字符串!abc!应返回三个匹配项:abc

我尝试了正则表达式!([a-z])+!,但它只返回一个匹配项:c . !(([a-z])+)!也无济于事。

import re
s = '!abc!'
print(re.findall(r'!([a-z])+!', s))

UPD:不用说,它也应该像!abcdef!这样的字符串一起工作。分隔符之间的字符数不是固定的。

您应该将捕获组放在([a-z]+)周围,包括整个重复的术语。 然后,您可以使用list()将匹配项转换为单个字母的列表。

s = '!abc!'
result = re.findall(r'!([a-z]+)!', s)
print list(result[0])

(?<=!.*)w(?=.*!) 应该返回你想要的结果,每个字符单独

好的,我正在回答我自己的问题。多亏了这个答案,找到了解决方案。

首先,需要一个替代regex模块,因为下面的正则表达式使用G锚点。

这是正则表达式:

(?:!|G(?!^))K([a-z])(?=(?:[a-z])*!)

就像一个魅力。

import regex
s = '!abcdef!'
print(regex.findall(r'(?:!|G(?!^))K([a-z])(?=(?:[a-z])*!)', s))

打印['a', 'b', 'c', 'd', 'e', 'f'] .

我调查您的问题,请在您的表达式中遵循以下逻辑

s = '!abc!'
print(re.findall(r'!([a-z])([a-z])([a-z])!',s))

每个字符被分成几组,以将它们单独放入数组中。

最新更新