Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.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/4/regex/16.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 重新填充图案以匹配非数字文本前面的所有n位数字_Python_Regex - Fatal编程技术网

Python 重新填充图案以匹配非数字文本前面的所有n位数字

Python 重新填充图案以匹配非数字文本前面的所有n位数字,python,regex,Python,Regex,我想用Python 3.7.5为这个任务构造一个正则表达式。输入文本如下所示: alkdj flajf 123 adlf ja;ld fj 999 423 234 2359 kalfji lkja;lkd999 我的目标是检索所有处于前导位置的数字,每个数字后面都有一个空格字符,并得到如下列表 [] [123] [423, 234, 2359] 任何建议都将不胜感激 import re data = ''' alkdj flajf 123 adlf ja;ld fj 999 423 234

我想用Python 3.7.5为这个任务构造一个正则表达式。输入文本如下所示:

alkdj flajf
123 adlf ja;ld fj 999
423 234 2359 kalfji lkja;lkd999
我的目标是检索所有处于前导位置的数字,每个数字后面都有一个空格字符,并得到如下列表

[]
[123]
[423, 234, 2359]
任何建议都将不胜感激

import re

data = '''
alkdj flajf
123 adlf ja;ld fj 999
423 234 2359 kalfji lkja;lkd999
'''
pattern = re.compile(r'([0-9 ]+) \w.*?')

pattern.findall(data)
产出:

['123', '423 234 2359']

如果您想单独捕获数字,我们可以使用fancy
\G
continue操作符:

import regex as re
rgx = r"(?|^(\d+)|\G \K(\d+))"
test_str = ("alkdj flajf\n"
    "123 adlf ja;ld fj 999\n"
    "423 234 2359 kalfji lkja;lkd999")

matches = re.finditer(rgx, test_str, re.MULTILINE)
for match in matches:
    print(match.group(1))
(演示需要PCRE,这就是为什么我要导入可选的regex模块)


我还使用分支重置
(?|)
\K
放弃操作符使事情正常进行。

您可以编写一个正则表达式,从行首捕获所有空格和数字。然后按空格分割。此外,在线正则表达式网站(如Chris建议的)是试用和使用regexAs的好地方,您可以使用
r“^\d*(?:+\d+*
)生成匹配项
”、
“123”
“423 234 2359”
,然后在一个或多个空格上分割每个匹配项。