捕获时限制正面前瞻
Restricting Positive Lookahead when capturing
我每隔一段时间从流中获取一些文本,例如,
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)
或 (?<=\=\').*(?=')
,但它们似乎不合适。
@Edit:我刚刚带着 (?<=\=\').*?(?=';)
来了。
当 ';S
不存在时,(?=';S)
将不适用于第一个和第三个示例。
另一方面(?=')
在第一个和第三个例子中会匹配太多。
您可以做的是在前瞻中使用交替来检查 ;:
或 '
后跟字符串的结尾。
(?<==').+?(?='(?:;|$))
说明
(?<==')
正面回顾断言左边的是 ='
.+?
非贪婪匹配任意字符一次或多次
(?=
正面前瞻断言右边的是
'(?:;|$)
匹配 '
后跟一个交替匹配 ;
或断言字符串结尾 $
)
关闭正面前瞻
我每隔一段时间从流中获取一些文本,例如,
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)
或 (?<=\=\').*(?=')
,但它们似乎不合适。
@Edit:我刚刚带着 (?<=\=\').*?(?=';)
来了。
';S
不存在时,(?=';S)
将不适用于第一个和第三个示例。
另一方面(?=')
在第一个和第三个例子中会匹配太多。
您可以做的是在前瞻中使用交替来检查 ;:
或 '
后跟字符串的结尾。
(?<==').+?(?='(?:;|$))
说明
(?<==')
正面回顾断言左边的是='
.+?
非贪婪匹配任意字符一次或多次(?=
正面前瞻断言右边的是'(?:;|$)
匹配'
后跟一个交替匹配;
或断言字符串结尾$
)
关闭正面前瞻