正则表达式匹配重复变量模式

时间:2016-11-23 08:11:42

标签: regex regex-greedy

我有一份文件,其中包含以下编号项目符号:

PLAN: 

1.  Make tea.                                                                                                                                
2.  Make coffe.                                                                                                                      
3.  Goto the market.   

我使用此正则表达式\:\s+(\d\.\s+[\w \.]+){1,9}来捕获和提取文件中的弹出列表。但是它只匹配第一个项目符号点。每个列表可以有2-7个子弹点,我打算(\d\.\s+[\w \.]+){1,9}应该允许匹配重复的子弹点,但事实并非如此。

那么如何才能使用正则表达式提取上述格式的项目符号列表?

1 个答案:

答案 0 :(得分:0)

您可以量化单个子弹模式并使用外部捕获组进行包装:

:\s*((?:\s*\d+\.\s+.+)+)

请参阅regex demo

<强>详情:

  • :\s* - 一个冒号,然后是0 +空格
  • ((?:\s*\d+\.\s+.+)+) - 第1组捕获1个或多个序列的序列:
    • \s* - 0+ whitespaces
    • \d+ - 1+位数
    • \. - 一个点
    • \s+ - 1+空格
    • .+ - 除了换行符之外的任何1个字符(实际取决于正则表达式的味道和你传递的标志/修饰符)