正则表达式匹配 - Python - 任意数量的字符
Regex match - Python - any amount of characters
找不到与我要查找的示例相似的示例。
我正在尝试在 FAA 航空航行通告中获取 ASN 编号。下面的示例:
示例文本:
2019-AWP-7268-OE
正则表达式匹配 (findall):
\d{4}-(?:AAL|ACE|AEA|AGL|ANE|ANM|ASO|ASW|AWP|WTE|WTW)-(?:\d{3,6})-(?:OE|NRA)
不过我也想在发多个的时候抓包:
- 2019-AWP-659 至 662-NRA
- 2019-AWP-3823/3825-NRA
- 2019-AWP-4593/4594/4595/4596-NRA
- 2019-ASW-4791、4794 至 4796、4798 至 4800-NRA
我试图创建一个包含任意数量字符但表达式以 OE/NRA 结尾的表达式。有什么方法可以匹配年份 (2019)、地区 (ASW|AWP)、任何文本 (3823/3825),然后是类型 (OE|NRA)?
我会用这样的东西:
r'((\d{4})-(AAL|ACE|AEA|AGL|ANE|ANM|ASO|ASW|AWP|WTE|WTW)-([^-]+)-(OE|NRA))'
当作为 re.findall()
的键给出时,应该生成一个嵌套列表,其中外部列表包含每个大匹配项,内部列表包含每个匹配项中的四个 sub-matches (分别作为元组的元素 1、2、3 和 4;元素 0 是完整的单一模式匹配)。
此后,您可以执行另一次正则表达式操作迭代或一些其他操作,特别是在匹配的 任何文本 部分,以准确隔离哪些 ID 或您想要的任何内容正在处理。
要匹配任何文本,您还可以使用.*
,它将匹配到行尾,然后回溯以匹配最后一次出现的-
然后将匹配 OE
或 NRA
您可以通过向字符 class 添加一些字符来缩短交替,例如 A[AG]L
以匹配 AAL
或 AGL
请注意,您不需要 (?:\d{3,6})
周围的非捕获组
^(\d{4})-(ACE|AEA|A[AG]L|AN[EM]|AS[WO]|AWP|WT[EW])-(\d{3,6}.*)-(OE|NRA)$
如果没有锚点,您可以使量词不贪婪并使用单词边界:
\b(\d{4})-(ACE|AEA|A[AG]L|AN[EM]|AS[WO]|AWP|WT[EW])-(\d{3,6}.*?)-(OE|NRA)\b
找不到与我要查找的示例相似的示例。
我正在尝试在 FAA 航空航行通告中获取 ASN 编号。下面的示例:
示例文本:
2019-AWP-7268-OE
正则表达式匹配 (findall):
\d{4}-(?:AAL|ACE|AEA|AGL|ANE|ANM|ASO|ASW|AWP|WTE|WTW)-(?:\d{3,6})-(?:OE|NRA)
不过我也想在发多个的时候抓包:
- 2019-AWP-659 至 662-NRA
- 2019-AWP-3823/3825-NRA
- 2019-AWP-4593/4594/4595/4596-NRA
- 2019-ASW-4791、4794 至 4796、4798 至 4800-NRA
我试图创建一个包含任意数量字符但表达式以 OE/NRA 结尾的表达式。有什么方法可以匹配年份 (2019)、地区 (ASW|AWP)、任何文本 (3823/3825),然后是类型 (OE|NRA)?
我会用这样的东西:
r'((\d{4})-(AAL|ACE|AEA|AGL|ANE|ANM|ASO|ASW|AWP|WTE|WTW)-([^-]+)-(OE|NRA))'
当作为 re.findall()
的键给出时,应该生成一个嵌套列表,其中外部列表包含每个大匹配项,内部列表包含每个匹配项中的四个 sub-matches (分别作为元组的元素 1、2、3 和 4;元素 0 是完整的单一模式匹配)。
此后,您可以执行另一次正则表达式操作迭代或一些其他操作,特别是在匹配的 任何文本 部分,以准确隔离哪些 ID 或您想要的任何内容正在处理。
要匹配任何文本,您还可以使用.*
,它将匹配到行尾,然后回溯以匹配最后一次出现的-
然后将匹配 OE
或 NRA
您可以通过向字符 class 添加一些字符来缩短交替,例如 A[AG]L
以匹配 AAL
或 AGL
请注意,您不需要 (?:\d{3,6})
^(\d{4})-(ACE|AEA|A[AG]L|AN[EM]|AS[WO]|AWP|WT[EW])-(\d{3,6}.*)-(OE|NRA)$
如果没有锚点,您可以使量词不贪婪并使用单词边界:
\b(\d{4})-(ACE|AEA|A[AG]L|AN[EM]|AS[WO]|AWP|WT[EW])-(\d{3,6}.*?)-(OE|NRA)\b