【问题标题】:Regex for a match in maximum within 2 lines正则表达式在 2 行内最多匹配
【发布时间】:2017-02-01 16:04:03
【问题描述】:

我似乎无法弄清楚这一点。 我想要匹配 2 个关键字的东西:KEYWORD1 和 KEYWORD2。顺序无关紧要 KEYWORD2 可以出现在 KEYWORD1 之前或之后。 KEYWORD1 和 KEYWORD2 之间可以是其他字符,但最大扫描在 2 行以内

显然 KEYWORD1 和 2 只是一个占位符。

应该匹配的例子:

"I saw KEYWORD1 walking around with KEYWORD2 yesterday"
"I saw KEYWORD1 walking around with \n KEYWORD2 yesterday"
"KEYWORD2 was spotted playing with KEYWORD1."
"KEYWORD2KEYWORD1 are best buddies."

不应匹配示例

"I saw KEYWORD1 walking around with \n\n KEYWORD2 yesterday."

有人建议我使用此正则表达式,只要存在 KEYWORD1,就向前看(不消耗),继续查找 KEYWORD2。但这会因为不止一个换行符而找到匹配项。

(?i)(?=[\\w\\s]*(KEYWORD1))[\\w\\s]*(KEYWORD2)

【问题讨论】:

    标签: java regex


    【解决方案1】:
    (KEYWORD1.*\n?.*KEYWORD2)|(KEYWORD2.*\n?.*KEYWORD1)
    

    【讨论】:

    • 太棒了!为什么我没有想到。谢谢@ka3ak。 PS:你有一个额外的 \n?.*
    • @RonPringadi 嗯,好的。我算错了。我已经编辑了答案。
    猜你喜欢
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多