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

标签 python regex

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

Regex demo | Python demo

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 demo

关于python - 正则表达式在条件 Python 之前查找特定字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64204143/

相关文章:

python - 将元组列表转换为结构化的 numpy 数组

python - 如何在 Python 中将字符串包装到文件中?

python - 如何将十六进制数据转换成二进制数据?

java - 如何使用正则表达式包含“with Pattern.compile

C# Regex - 如何忽略变量的转义序列

python - 使用自定义验证覆盖 URLField 的验证

python - 无法使用 beautifulsoup 检索 <a> 标签 href(以 "?"而不是 http/s 开头)

python - 为什么我的 if 在循环中发出哔哔声

regex - 直到下一个空格的条件的正则表达式

python - 使用正则表达式在 Python 中进行字数统计