python - RegEx 匹配没有指定空格的字符
问题描述
我的 RegEx 也可以在此处找到,尽管我手动插入字符以查找回车符。
((?:\d{6}?)([A-Z\d]{3})?(?:[\^r\ ]+)(([A-Z\d]{6}|[A-Z\d]{5} |[A-Z\d]{4} ))?)
我在 5 和 4 个字符串之后指定了一个空格,但我的正则表达式似乎至少在第一行忽略了它。即使我不希望它匹配“EXTEND”。只要后面有空格。它可以在第三行使用“XOBUS”。
FPCN54 CWNT 080810^r^r EXTENDED FORE #should not match anything
ASUS42 KMHX 080425^r^r RWRMHX^r^r WEAT #should match RWRMHX
RXUS30 KWNO 081300^r^r XOBUS ^r^r GREA #should match XOBUS w/ 1 trailing space
FXUS64 KEWX 081112 RR3^r^r AFDEWX^r^r #should match RR3 and AFDEWX
编辑:忘记在第一个回车之前包含一个 3 个字符的字母数字。见第 4 行。也需要捕捉到这一点。
解决方案
根据上面您想要的输出,您使正则表达式过于复杂。**顺便说一句,上面你说'5或4个字符串',但在你想要的输出中,你有一个“6”个字符串和一个3个字符串。
>>> import re
>>> string = '''FPCN54 CWNT 080810^r^r EXTENDED FORE #should not match
anything
ASUS42 KMHX 080425^r^r RWRMHX^r^r WEAT #should match RWRMHX
RXUS30 KWNO 081300^r^r XOBUS ^r^r GREA #should match XOBUS w/ 1 trailing
space
FXUS64 KEWX 081112 RR3^r^r RR3555^r^r AFDEWX^r^r #should match RR3, RR3555, and AFDEWX'''
>>> re.findall('(?m)([\d]*[A-Z]+(?:[A-Z]*[\d]*)*[\s]*)[\^r]{2,}', string)
#OUTPUT
['RWRMHX', 'XOBUS ', 'RR3', 'AFDEWX', 'RR3555']
推荐阅读
- reactjs - 我想通过 puppeteer 传递一组数据来呈现 react-vis 组件,而不是在 html 模板中传递数据?
- javascript - 获取错误消息原因 get addrinfo ENOTFOUND localhost
- sorting - 使用 frama-c 的递归快速排序的正式证明
- wcf - 增加 WCF 服务终结点大小配置的问题
- python - SimpleCookie 泛型类型
- java - 将配置传递给 Kafka 客户端的推荐方法
- typescript - 打字稿对象值扩展类型
- authorization - ActivePivot 授权
- python - vscode 运行所有测试(pytest)失败
- oracle - 2个符号oracle之间的相似性