python - 仅当前面有特定模式时才匹配单词
问题描述
我有一个来自 NWS 公告的字符串:
LTUS41 KCAR 141558 AAD TMLB Forecast for the National Parks
KHNX 141001 RECHNX Weather Service San Joaquin Valley
我的目标是用正则表达式提取几个字段。在第一个字符串中我想要“AAD”,从第二个字符串中我想要“RECHNX”。我努力了:
( )\w{3} #for the first string
和
\w{6} #for the 2nd string
但是这些找到了我想要的字符串的所有 3 和 6 个字符串。
解决方案
假设您要提取的字段始终为大写字母并以 6 位数字和一个空格开头,则此正则表达式可以解决问题:
(?<=\d{6}\s)[A-Z]+
演示:https ://regex101.com/r/dsDHTs/1
编辑:如果你想匹配最多两个字母数字大写单词,前面有 6 个数字,你可以使用:
(?<=\d{6}\s)([A-Z0-9]+\b)\s(?:([A-Z0-9]+\b))*
演示:https ://regex101.com/r/dsDHTs/5
如果您有有效字段的特定列表,您也可以简单地使用:
(AAD|TMLB|RECHNX|RR4HNX)
推荐阅读
- java - 如何在 Spring AMQP 中监听现有队列?
- ms-access - 在查询中设置字段格式以报告
- c# - 在 C# 中将 SID 转换为 GUID?
- git - 并行获取多个 Git 遥控器
- javascript - 如何使用 url Get 请求发送数组?
- angular - Angular中单击事件的管道触发器
- numbers - 生成具有均值和方差的整数
- python - Python中等效的MATLAB定点函数“fi”
- websocket - ejabberd:为 xmpp 服务器启用 websocket 通信的配置
- facebook - Facebook 登录响应没有电子邮件和公共个人资料数据