Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-正则表达式模式优先级-多组数字_Python_Regex - Fatal编程技术网

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}
,可以很容易地添加它。请参见编辑。