gpt4 book ai didi

python - 正则表达式 - 查找包含至少 1 个大写字母、一位数字或一个特殊字符的连续 'words'

转载 作者:行者123 更新时间:2023-12-02 18:02:31 30 4
gpt4 key购买 nike

我正在尝试提取至少包含以下一项的单词序列:

  • 大写字符。
  • 数字
  • ':' 或 '-'

例如下面的短语:

  • aBC 一直在联系 Maria 和 James,他们的系统 DB-54:ABB 的 DDD 代码是 12343-4。

我想提取以下项目:

  • aBC
  • 玛丽亚
  • 詹姆斯
  • DDD代码
  • DB-54:ABB
  • 12343-4

到目前为止,我有以下代码:

import re
re.findall(r'((\S*[A-Z|0-9|\:|\-]\w*)([\, |\.])?)', 'aBC has been contacting Maria and ere our DDD Code for system DB-54:ABB is 12343-4.')

哪个返回:

[('aBC ', 'aBC', ' '),
('Maria ', 'Maria', ' '),
('DDD ', 'DDD', ' '),
('Code ', 'Code', ' '),
('DB-54:ABB ', 'DB-54:ABB', ' '),
('12343-4.', '12343-4', '.')]

除了拆分 DDD 和代码之外,这将返回所有需要的项目。我的目标是将包含上述项目的连续单词组合在一起。 'DDD' 'Code' 都是大写字母,而且是连续的,属于同一个字符串

最佳答案

您可以添加 + 来重复该模式。我对它进行了一些简化,因为您在不需要的地方使用了反斜杠。这将产生您想要的 6 个捕获组:

((\S*[A-Z0-9:-]\w*)($|[ ,.]))+

Demo

放入代码:

import re

m = re.findall(r'(((\S*[A-Z0-9:-]\w*)($|[ ,.]))+)',
'aBC has been contacting Maria and James where their DDD Code for system DB-54:ABB is 12343-4.')

print(m)

输出:

[('aBC ', 'aBC ', 'aBC', ' '),
('Maria ', 'Maria ', 'Maria', ' '),
('James ', 'James ', 'James', ' '),
('DDD Code ', 'Code ', 'Code', ' '),
('DB-54:ABB ', 'DB-54:ABB ', 'DB-54:ABB', ' '),
('12343-4.', '12343-4.', '12343-4', '.')]

关于python - 正则表达式 - 查找包含至少 1 个大写字母、一位数字或一个特殊字符的连续 'words',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74006689/

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