为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哆啦的时光机 2023-10-06 19:27:36
我只想找到后面跟着三个 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 个单词字符后跟BF

负向先行断言直接位于右侧的不是 A,但您想要相反的结果。

您可以匹配单个 BZ 并断言直接位于右侧的内容是 AAA

[B-Z](?=AAA)

正则表达式演示Python演示

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演示


查看完整回答
反对 回复 2023-10-06
?
慕后森

TA贡献1802条经验 获得超5个赞

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

查看完整回答
反对 回复 2023-10-06
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

这是您的问题的解决方案:

 pattern = "([B-Z]{1})(A{3})"
 for item in re.finditer(pattern, s):
     result.append(item.group(1))


查看完整回答
反对 回复 2023-10-06
  • 3 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信