【问题标题】:Multiline PCRE, multiple conditions多行 PCRE,多个条件
【发布时间】:2020-03-28 17:14:54
【问题描述】:

刚开始使用正则表达式并遇到了绊脚石。希望有人能够解释解决方法。

尝试执行多行搜索。我希望使用“*”作为“标志”,可以这么说:如果一行包含一个星号,它应该匹配。应输出行首的数字,链接示例中的“匹配”一词也应输出,不包括星号本身。

我假设我使用“|”将正则表达式分为两个条件,而实际上需要同时满足这两个条件才能匹配。

https://regex101.com/r/Pu56bi/2

(?m)(^\d+)|(?<=\*).*$

感谢您的帮助。

【问题讨论】:

    标签: regex pcre


    【解决方案1】:

    您可以使用 pos。向前看

    ^(?=.*?\*)(\d+).+?(Match)$
    

    your modified example on regex101.com

    【讨论】:

    • 感谢 Jan 的此输入。我的示例不清楚,我只想匹配该行的其余部分,而不是字面意思的“匹配”。我使用您的指导将我的正则表达式更新为以下内容: (?m)(?=.*?*)(\d+)|(*\w*).*$ regex101.com/r/SQzmw9/2 是否还有可能“匹配直到”? regex101.com/r/bRQkWM/1
    【解决方案2】:

    如果Match 始终位于字符串的末尾,您可以匹配字符串开头的数字,然后匹配字符串末尾的*Match

    使用字边界\b 防止数字字成为较长字的一部分。

    ^(\d+)\b.*\*.*\b(Match)$
    

    Regex demo

    如果在 Match 之后可以进行测试,您可以使用肯定的前瞻来断言 *

    ^(?=.*\*)(\d+)\b.*\b(Match)\b.*$
    

    Regex demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多