Python 重新填充图案以匹配非数字文本前面的所有n位数字
我想用Python 3.7.5为这个任务构造一个正则表达式。输入文本如下所示: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
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”
,然后在一个或多个空格上分割每个匹配项。