【问题标题】:regex non greedy quantifier catching nothing, greedy catching too much正则表达式非贪婪量词什么都不捕获,贪婪地捕获太多
【发布时间】:2022-09-28 20:31:49
【问题描述】:

我正在编写一个解析标题内容的python regex 公式,但是贪婪量词效果不佳,非贪婪量词根本不工作。

我的字符串是

Step 1 Introduce The Assets:
Step2 Verifying the Assets
Step 3Making sure all the data is in the right place:

我要做的是提取步骤号和标题,不包括:。 现在我尝试了多个正则表达式字符串并想出了这两个:

r1 = r\"Step ?([0-9]+) ?(.*) ?:?\"
r2 = r\"Step ?([0-9]+) ?(.*?) ?:?\"

r1 正在捕获步骤号,但也在最后捕获:。 r2 正在捕获步骤号和\'\'。我不确定如何处理.* 后跟字符串的情况。

必要的编辑: 标题可能在字符串中包含:,我只想忽略尾随的。我知道我可以strip(\':\') 但我想了解我做错了什么。

  • 使用多行模式,您可以尝试r2 = r\"Step ?([0-9]+) ?(.*?) ?:?$\"

标签: python regex


【解决方案1】:

您可以使用否定字符类编写模式,而无需使用否定字符类的非贪婪和可选部分:

\bStep ?(\d+) ?([^:\n]+)

Regex demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-19
    • 2021-08-19
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多