gpt4 book ai didi

python - 从字符串 python 中提取年龄

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:08 25 4
gpt4 key购买 nike

考虑这个字符串:

s="""A25-54 plus affinities targeting,Demo (AA F21-54),
A25-49 Artist Affinity Targeting,M21-49 plus,plus plus A 21+ targeting"""

我正在寻找修复我的模式,该模式目前没有拉出字符串中的所有年龄组(当前输出中缺少 A 21+)。

当前尝试:

import re
re.findall(r'(?:A|A |AA F|M)(\d+-\d+)',s)

输出:

['25-54', '21-54', '25-49', '21-49'] #doesnot capture the last group A 21+

预期输出:

['A25-54','AA F21-54','A25-49','M21-49','A 21+']

如您所见,我也想要最后一组,即 A 21+,目前我的输出中缺少它。

此外,如果我可以获得与捕获组关联的字符串。目前我的输出除了没有捕获所有组之外没有年龄组之前的字符串。例如:我想 'A25-54 而不是 '25-54' ,我猜是因为 ?:

感谢我能得到的任何帮助。

最佳答案

匹配的缺失部分是由于您的模式包含一个捕获组,一旦正则表达式中有一个捕获组,re.findall 仅返回该部分。第二个问题是您应该匹配 - 后跟 1 个或多个数字 在第一个或多个数字之后的文字 + 符号匹配。

你可以使用

(?:A|A |AA F|M)\d+(?:-\d+|\+)

注意:您可能希望在开头添加一个单词边界以仅匹配那些 AAA F 等作为整体单词:r'\b(?:A|A |AA F|M)\d+(?:-\d+|\+)'

参见 regex demoregex graph :

enter image description here

详情

  • (?:A|A |AA F|M) - 非捕获组匹配 A, A , AA AA FM
  • \d+ - 1+ 位
  • (?:-\d+|\+) - 非捕获组匹配 - 和它后面的 1+ 个数字或单个 +符号。

Python demo :

import re
s="""A25-54 plus affinities targeting,Demo (AA F21-54),
A25-49 Artist Affinity Targeting,M21-49 plus,plus plus A 21+ targeting"""
print(re.findall(r'(?:A|A |AA F|M)\d+(?:-\d+|\+)',s))
# => ['A25-54', 'AA F21-54', 'A25-49', 'M21-49', 'A 21+']

关于python - 从字符串 python 中提取年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56559625/

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