我们想找到后面跟三元组A的所有字符(A除外)



考虑一个字符串s。我们想找到后面跟着三元组a的所有字符(a除外(,即右边有AAA。我们不想在输出中包含三元组A,只希望字符紧跟在AAA之前。完成下面给出的代码,以输出所需的结果。

def result():
s = 'ACAABAACAAABACDBADDDFSDDDFFSSSASDAFAAACBAAAFASD'
result = []
# compete the pattern below
pattern = 
for item in re.finditer(pattern, s):
# identify the group number below.
result.append(item.group())

return result

我正在使用以下正则表达式:

(.)(AAA)

这将返回第一个AAA之前的第一个C。

但是,如何返回每次AAA出现时的所有先例字符?

试试这个:

import re
s = 'ACAABAACAAABACDBADDDFSDDDFFSSSASDAFAAACBAAAFASD'
pattern = r"([^A])(?=AAA)"
# compete the pattern below
for item in re.finditer(pattern, s):
# identify the group number below.
print(item.group())

结果:

C
F
B

或者,您可以简单地使用findall:

print(re.findall(r"([^A])(?=AAA)", s))

结果:

['C', 'F', 'B']

您可以匹配B-Z并在右侧断言AAA

[B-Z](?=AAA)

Regex演示

import re
pattern = r"[B-Z](?=AAA)"
s = "ACAABAACAAABACDBADDDFSDDDFFSSSASDAFAAACBAAAFASD"
print(re.findall(pattern, s))

输出

['C', 'F', 'B']

除了A之外的任何字符都可以使用否定字符类进行匹配

[^A](?=AAA)

相关内容

最新更新