繁体   English   中英

重新模式以匹配非数字文本前面的所有 n 位数字

[英]re pattern to match all n-digit numbers in front of non-digit text

我想用 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']

如果您想单独捕获数字,我们可以使用花哨的\\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,这就是我导入替代正则表达式模块的原因)

我还使用分支重置(?|)\\K丢弃运算符来使事情正常进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM