我只想找到后面跟着三个 A 的所有字符(A 除外),即右侧有 AAA。我不想在输出中包含三个 A,只想在 AAA 之前包含字符result = []s = 'ACAABAACAAABACDBADDDFSDDDFFSSSASDAFAAACBAAAFASD'pattern = "r'(\w[BF])(?!AAA)'"for item in re.finditer(pattern, s): result.append(item.group()) print(result)我使用了这个模式 r'(\w[BF])(?!AAA)' 但没有用我只需要在 [] 中找到这些字母'ACAABAA[C]AAABACDBADDDFSDDDFFSSSASDA[F]AAAC[B]AAAFASD'
3 回答
一只甜甜圈
TA贡献1836条经验 获得超5个赞
在您的示例中,您想要匹配三元组 A 左侧的单个字符。使用\w[BF]
至少匹配 2 个字符,其中 1 个单词字符后跟B
或F
负向先行断言直接位于右侧的不是 A,但您想要相反的结果。
您可以匹配单个 BZ 并断言直接位于右侧的内容是 AAA
[B-Z](?=AAA)
import re
result = []
s = 'ACAABAACAAABACDBADDDFSDDDFFSSSASDAFAAACBAAAFASD'
pattern = r'[B-Z](?=AAA)'
for item in re.finditer(pattern, s):
result.append(item.group())
print(result)
输出
['C', 'F', 'B']
您还可以使用re.findall
import re
s = 'ACAABAACAAABACDBADDDFSDDDFFSSSASDAFAAACBAAAFASD'
pattern = r'[B-Z](?=AAA)'
result = re.findall(pattern, s)
print(result)
吃鸡游戏
TA贡献1829条经验 获得超7个赞
这是您的问题的解决方案:
pattern = "([B-Z]{1})(A{3})" for item in re.finditer(pattern, s): result.append(item.group(1))
添加回答
举报
0/150
提交
取消