代码之家  ›  专栏  ›  技术社区  ›  Soner from The Ottoman Empire

捕获时限制正向展望

  •  0
  • Soner from The Ottoman Empire  · 技术社区  · 6 年前

    我每隔一段时间就会收到一些信息,

    ICY Info: StreamTitle='Elvis Presley - Saved';StreamUrl='';
    
    ICY Info: StreamTitle='Elvis Presley - Saved'
    
    ICY Info: StreamTitle='Ivank'av T'ali - Yorua';StreamUrl='';
    
    ICY Info: StreamTitle='Ivank'av T'ali - Yorua'
    

    我希望获得

    Elvis Presley - Saved
    Elvis Presley - Saved
    Ivank'av T'ali - Yorua
    Ivank'av T'ali - Yorua
    

    我在用 (?<=\=\').*(?=';S) (?<=\=\').*(?=') 但它们似乎不合适。

    Demo

    (?<=\=\').*?(?=';)

    1 回复  |  直到 6 年前
        1
  •  1
  •   The fourth bird    6 年前

    (?=';S) 不适用于第一个和第三个示例 ';S 不在那里。

    (?=') 在第一个和第三个例子中匹配太多。

    您可以在lookahead中使用一个替代项来检查 ;: '

    (?<==').+?(?='(?:;|$))

    Regex demo

    解释

    • (?<==') ='
    • .+? 匹配任意字符一次或多次非贪婪
    • (?= 积极的前瞻性来断言什么是正确的
      • '(?:;|$) ' 然后是交替匹配 ; 或断言字符串的结尾 $
    • ) 关闭正面展望