Python Regex-以更干净的方式重复捕获组模式

Python Regex-以更干净的方式重复捕获组模式,python,regex,Python,Regex,我开始学习正则表达式,我有以下问题。全文如下: 00 0-23/2 * * * ubuntu source /home/ubuntu/virtualenv/ ......... 10 17 8 1,3,6,12 * ubuntu source /home/ubuntu/virtualenv/ ............. 25 6 * * * root test -x /usr/sbin/anacron || ( ..................... 47 6

我开始学习正则表达式,我有以下问题。全文如下:

00 0-23/2 * *   *   ubuntu  source /home/ubuntu/virtualenv/  .........
10 17 8 1,3,6,12 * ubuntu source /home/ubuntu/virtualenv/   .............
25 6    * * *   root    test -x /usr/sbin/anacron || ( .....................
47 6    * * 7   root    test -x /usr/sbin/anacron || ( ......................
52 6    1 * *   root    test -x /usr/sbin/anacron ||....................
我使用了这个正则表达式和
python re
包:

"[\d\*,/-]+\s{1,}[\d\*,/-]+\s{1,}[\d\*,/-]+\s{1,}[\d\*,/-]+\s{1,}[\d\*,/-]+"
它返回每行的前5个数字信息。但是写
[\d\*,/-]+
5次是不好的

我尝试了
([\d*,/-]+)\s{1,}{5}
(?([\d*,/-]+)\s{1,}
)或使用
符号的变体,希望获得感兴趣的捕获组并重复它

我的感觉是,我还没有理解这个符号,或者有另一个合适的语法来解决我想要解决的问题(避免
[\d\*,/-]+
重复)

你能帮我吗


谢谢大家!

假设您想要保留捕获的数据,那么您可能只是缺少了一个围绕重复捕获组的捕获组,这样您的正则表达式就可以捕获更多的数据

(([\d*,/-]+\s+){5})
用了这样的话:

import re
inputString = ...
expression = re.compile("(([\d*,/-]+\s+){5})")
matches = expression.findall(inputString)
print(matches)
可能有用的参考资料:

  • (我高度推荐,给你一个完整的分类)

假设您想要保留捕获的数据,您可能只是缺少一个围绕重复捕获组的捕获组,因此您的正则表达式捕获的不仅仅是上一次出现的数据

(([\d*,/-]+\s+){5})
用了这样的话:

import re
inputString = ...
expression = re.compile("(([\d*,/-]+\s+){5})")
matches = expression.findall(inputString)
print(matches)
可能有用的参考资料:

  • (我高度推荐,给你一个完整的分类)

    • 也许
      (?:[\d\*,/-]+\s+{5}
      ?谢谢你,尼克!现在我知道我犯了很多错误,但现在我明白了!我试着用(?:),但方法不对。而且,
      \s+
      \s{1,}
      干净得多。真的谢谢你!不用担心-我很高兴这很有用。也许
      (?:[\d\*,/-]+\s+{5}
      ?谢谢你,尼克!现在我知道我犯了很多错误,但现在我明白了!我试着用(?:),但方法不对。而且,
      \s+
      \s{1,}
      干净得多。真的谢谢你!不用担心-我很高兴这是有用的。谢谢,伊萨!这个网站,regex101,真的很不错!我喜欢它!你的括号是不平衡的,你错过了星号,为什么你要逃避斜杠和连字符?它们确实,很好的定位。连字符是一个特殊的字符范围,正斜杠,谁知道当时的感觉。谢谢,伊萨!这个网站,regex101,真的很不错!我喜欢它!你的括号是不平衡的,你错过了星号,为什么你要逃避斜杠和连字符?它们确实,很好的定位。连字符是一个特殊的字符范围,正斜杠,谁知道它在当时的感觉。