找不到与我正在查找的类似的示例
我正试图在联邦航空局航空通告中获取ASN编号。示例如下:
示例文本:
2019-AWP-7268-OE
正则表达式匹配(findall):
\d{4}-(?:AAL|ACE|AEA|AGL|ANE|ANM|ASO|ASW|AWP|WTE|WTW)-(?:\d{3,6})-(?:OE|NRA)
但是,我还想在发出多个命令时捕获它:
我试图创建一个表达式,其中包含任意数量的字符,但表达式以OE/NRA结尾。有没有办法匹配年份(2019年)、地区(ASW | AWP)、任何文本(3823/3825),然后键入(OE | NRA)
我会用这样的方式:
当作为
re.findall()
的键给出时,应该生成一个嵌套列表,其中外部列表包含每个大匹配,内部列表包含每个匹配中的四个子匹配(分别作为元组的元素1、2、3和4;元素0是完整的单模式匹配)此后,您可以执行另一次正则表达式操作迭代,或一些其他操作,特别是在匹配的任何文本部分上,以准确地隔离您正在处理的ID或任何内容
要匹配任何文本,您还可以使用
.*
,它将匹配到行尾,然后回溯到匹配-
的最后一次出现,然后匹配OE
或NRA
您可以通过向字符类(如
A[AG]L
)添加一些字符来匹配AAL
或AGL
来缩短交替注意
(?:\d{3,6})
周围不需要非捕获组Regex demo
如果没有锚,您可以使量词不贪婪并使用单词边界:
Regex demo
相关问题 更多 >
编程相关推荐