Python-正则表达式模式优先级-多组数字
我的目标是创建一个能够处理此数字系列的正则表达式:Python-正则表达式模式优先级-多组数字,python,regex,Python,Regex,我的目标是创建一个能够处理此数字系列的正则表达式: 0014 2139 2411 0003 2139 2411 0104 43 022 我试图找到一种方法来创建一个正则表达式语法,该语法将返回一组最多4位数字,由空格分隔,最多重复3次,结果优先级为完整的4位数字匹配。 例如,如果我有以下文本: 0014434 2139 2411 Some text line... bla bla 0003 2139 2411 0003 2039 2411 0104 43 xxxx
0014 2139 2411
0003 2139 2411
0104 43
022
我试图找到一种方法来创建一个正则表达式语法,该语法将返回一组最多4位数字,由空格分隔,最多重复3次,结果优先级为完整的4位数字匹配。
例如,如果我有以下文本:
0014434 2139 2411
Some text line... bla bla
0003 2139 2411
0003 2039 2411
0104 43
xxxx
0223423423
我希望正则表达式返回:0003 2139 2411
在这种情况下:
001 2139 2411
0003 21
0104 43
我想让正则表达式返回->0003 21
我尝试了\d{4}
,但在第一行它发现了3个不同的匹配项。
谢谢
雷格斯
更新
根据@Abion提供的guggested,使用:
(^\d{1,4}$|^\d{4} \d{1,4}$|^\d{4} \d{4} \d{1,4}$)
适用于4字符+空格系列:
正则表达式:
(^\d{1,4}$|^\d{4} \d{0,4}$|^\d{4} \d{4} \d{0,4}$)
使用组条件,此模式匹配一个由一到四位数字组成的数字组,或一个由四位数字组成的数字组,后跟一到四位数字组成的数字组,或两个由四位数字组成的数字组,后跟一到四位数字组成的数字组。这些标准将删除第二个示例的第一行(由三个数字组成的数字组,后面跟着更多的数字组),从而使其与第二行匹配
注意,必须提供re.MULTILINE
选项才能使用此模式
示例:在第二个示例中,为什么希望它与
0003 21
匹配,而不是001 2139 2411
?第一行看起来符合你的标准“最多3个组,每个组最多4个数字”。我想他指的是最多3个数字的重复??Thx@Abion47,似乎效果很好,除了有4个数字+空格字符的情况:在模式中似乎无法识别。请看我的更新。thx@user3925023我不知道空间是必要的。不过,通过将第二个和第三个条件的最后一个组更改为匹配{0,4}
,而不是{1,4}
,可以很容易地添加它。请参见编辑。