我只想找到后面跟着三个 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'
最佳答案
在您的示例中,您想要匹配三元组 A 左侧的单个字符。使用 \w[BF]
匹配至少 2 个字符,即 1 个单词字符后跟 B
或 F
负前瞻断言直接在右边的不是三元组 A,但您想要相反的结果。
您可以匹配单个 B-Z 并断言直接在右边的是 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)
关于python - 正则表达式在条件 Python 之前查找特定字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64204143/