代码之家  ›  专栏  ›  技术社区  ›  Revious

正则表达式来匹配speaker1:a\n speaker1:b–†–speaker1:ab

  •  0
  • Revious  · 技术社区  · 4 年前

    这是我最初的尝试

    ^(speaker1|speaker2): (.*?)[\n\s\r]+\k<1>: 
    

    但在这种情况下不起作用:

    发言人2:223 发言人1:fkjfdsj

    因为正则表达式(*?)继续寻找,直到找到第三行。

    所以我尝试添加一个负面的lookback(?<!^(Io|Lei):)

    ^(speaker1|speaker2): (.*?(?<!^(speaker1|speaker2):))[\n\s\r]+\k<1>: 
    

    但它不起作用。

    1 回复  |  直到 4 年前
        1
  •  1
  •   trincot    4 年前

    你可以在 每个字符的位置 是否有 与扬声器模式匹配:

    \bspeaker[12]:((?:(?!\bspeaker[12]).)*)
    

    话虽如此,如果编程环境允许,只进行匹配将更有效 speaker[12]: 分裂 按匹配项输入文本。