捕获时限制正向展望

2024-05-12 15:56:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

@Edit:我刚带来了(?<=\=\').*?(?=';)


Tags: info信息demoalieditelvissavedav
1条回答
网友
1楼 · 发布于 2024-05-12 15:56:10

';S不存在时,(?=';S)将不适用于第一个和第三个示例

另一方面,在第一个和第三个例子中(?=')会匹配太多

您可以在lookahead中使用一个替代项来检查;:',后跟字符串的结尾

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

Regex demo

解释

  • (?<==')肯定的lookback断言左边的是='
  • .+?匹配任意字符一次或多次非贪婪
  • (?=积极向前看,断言右边的是
    • '(?:;|$)匹配',后跟匹配;或断言字符串$结尾的替换
  • )关闭正向展望

相关问题 更多 >