猿问

正则表达式在Python条件之前查找特定字母

我只想找到后面跟着三个 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'


哆啦的时光机
浏览 157回答 3
3回答

一只甜甜圈

在您的示例中,您想要匹配三元组 A 左侧的单个字符。使用\w[BF]至少匹配 2 个字符,其中 1 个单词字符后跟B或F负向先行断言直接位于右侧的不是 A,但您想要相反的结果。您可以匹配单个 BZ 并断言直接位于右侧的内容是 AAA[B-Z](?=AAA)正则表达式演示| Python演示import reresult = []s = 'ACAABAACAAABACDBADDDFSDDDFFSSSASDAFAAACBAAAFASD'pattern = r'[B-Z](?=AAA)'for item in re.finditer(pattern, s):    result.append(item.group())print(result)输出['C', 'F', 'B']您还可以使用re.findallimport res = 'ACAABAACAAABACDBADDDFSDDDFFSSSASDAFAAACBAAAFASD'pattern = r'[B-Z](?=AAA)'result = re.findall(pattern, s)print(result)Python演示

慕后森

[^A](?=A{3})这里我使用正向前瞻。

吃鸡游戏

这是您的问题的解决方案: pattern = "([B-Z]{1})(A{3})"  for item in re.finditer(pattern, s):      result.append(item.group(1))
随时随地看视频慕课网APP

相关分类

Python
我要回答