【问题标题】:finding text between words on multiple lines在多行的单词之间查找文本
【发布时间】:2019-05-30 14:54:58
【问题描述】:

在下面的文本中,我也试图确定文本属于哪个家庭成员。评论将在家庭成员之前。所以在下面的示例中,我应该只识别母亲.. 父亲没有评论

some stuf Father 
more stuff Mother

Comment: Deceased

在搜索并尝试了一些负面的环顾后,我似乎仍然无法让它发挥作用.. 例如..

Father(?!Mother).*Comment:\s?(deceased|died)

这个正则表达式不应该找到匹配项。但它最终匹配

Father 
more stuff Mother

Comment: deceased

如果我切换母亲和父亲,它会正确匹配。但我不需要在示例中匹配,因为评论不属于父亲

【问题讨论】:

    标签: java regex regex-lookarounds


    【解决方案1】:

    您必须扩展否定前瞻 (?!.*?Mother) 以匹配任何字符 0 次以上,否则它会断言直接在右边的不是母亲。

    在这种情况下,Mother 不会直接跟随在 Father 之后,因此断言成功,这部分 .*Comment 将匹配到最后一次出现的 Comment,后面的内容可以匹配。

    您的模式可能如下所示:

    Father(?!.*?Mother).*Comment:\s?(deceased|died)
    

    Regex demo

    也许您也可以让 Comment 的点星方法不贪心,以防止过度匹配:

    .*?Comment
    

    【讨论】:

      猜你喜欢
      • 2013-04-04
      • 2014-11-05
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多