Python Regex始终匹配最后一个group子句
我有这根绳子Python Regex始终匹配最后一个group子句,python,regex,Python,Regex,我有这根绳子 AC7640蒙特利尔特鲁多(YUL)拉瓜迪亚/纽约(LGA)E75业务(p)已确认 我希望它与AC、7640、YUL和LGA 但如果最后一个机场不存在,我也想匹配,例如: AC7640蒙特利尔特鲁多(YUL)E75业务(p)已确认 AC,7640和YUL 我想出了这个正则表达式: ([A-Z]{2}}[A-Z][0-9]{0-9][A-Z])\s*([0-9]{1,4})(?:.*([A-Z]{3}){1,2} 问题是它在两个字符串上只匹配1个机场 我正在使用python fl
AC7640蒙特利尔特鲁多(YUL)拉瓜迪亚/纽约(LGA)E75业务(p)已确认
我希望它与AC
、7640
、YUL
和LGA
但如果最后一个机场不存在,我也想匹配,例如:
AC7640蒙特利尔特鲁多(YUL)E75业务(p)已确认
AC
,7640
和YUL
我想出了这个正则表达式:
([A-Z]{2}}[A-Z][0-9]{0-9][A-Z])\s*([0-9]{1,4})(?:.*([A-Z]{3}){1,2}
问题是它在两个字符串上只匹配1个机场
我正在使用python flavor您需要“展开”模式,因为重复的捕获组只存储最后一次出现:
^([A-Z]{2}|[A-Z][0-9]|[0-9][A-Z])\s*([0-9]{1,4}).*?\(([A-Z]{3})\)(?:.*?\(([A-Z]{3})\))?
看。另外,请注意最后一部分,(?:.*?\([A-Z]{3})\)?
,包含一个可选的非捕获组,以便它可以匹配1个或0个事件<代码>^开头使正则表达式引擎仅从字符串开头搜索
详细信息:
-字符串的开头^
-第1组:两个大写字母或一个大写字母和一个数字或一个数字和一个大写字母([A-Z]{2}|[A-Z][0-9]|[0-9][A-Z])
-0+空格\s*
-第2组:一到四位数字([0-9]{1,4})
-任何0+字符尽可能少,直到第一个字符*?
-a\(
(
-第3组:三个大写字母([A-Z]{3})
-\)
)
-与以下事件的1或0(可选)匹配的非捕获组:(?:.*?\([A-Z]{3})\)?
-任何0+字符尽可能少,直到第一个*?
-a\(
(
-第4组:三个大写字母([A-Z]{3})
-a\)
)
([A-Z]{3})
在这两种情况下都是可能的,但我看到机场代码可以是1个字符长。嗯,那是可以改编的。啊哈,我现在懂了。在第二种情况下,不应返回P
。