gpt4 book ai didi

python - 在正则表达式中如何将字母数字字符串的模式与它们之前/之后的空格或标点符号匹配

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:44 27 4
gpt4 key购买 nike

我有这样的输入

txt='.A3 S3- D4(SPACE) D5/ E9R E0&'

如何提取匹配 1 个字母 + 1 个数字的所有模式。可以在前后有标点符号(& 除外)或空格,但不允许在前后有其他字母。

预期的匹配是:

['A3', 'S3', 'D4', 'D5']

E9R 不会被退回,因为它包含 E9 之后的字母。E0& 不会返回,因为它包含 &

import re
re.findall('[a-z]{2,3}[0-9]{1,3}',txt)

最佳答案

你可以使用

re.findall(r'(?<![a-z0-9&])[a-z][0-9](?![a-z0-9&])', s, re.I)

参见 regex demo

详情

  • (?<![a-z0-9&]) - 未紧跟 ASCII 字母、数字或 & 的位置
  • [a-z] - 一个 ASCII 字母(注意 re.I 使模式不区分大小写)
  • [0-9] - 一个 ASCII 数字
  • (?![a-z0-9&]) - 没有紧跟 ASCII 字母、数字或 & 的位置.

Python demo :

import re
rx = r"(?<![a-z0-9&])[a-z][0-9](?![a-z0-9&])"
s = ".A3 S3- D4(SPACE) D5/ E9R E0&"
print(re.findall(rx, s, re.I))
# => ['A3', 'S3', 'D4', 'D5']

关于python - 在正则表达式中如何将字母数字字符串的模式与它们之前/之后的空格或标点符号匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51937351/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com