我只想找到后面跟著三個 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
提交
取消