我会像从流中那样间隔获取一些文本,
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:我刚来了(?<=\=\').*?(?=';)
。
答案 0 :(得分:1)
(?=';S)
不存在时, ';S
在第一个和第三个示例中将不起作用。
另一方面,(?=')
在第一个和第三个示例中的匹配度太大。
您可以做的是在前瞻中使用交替显示来检查;:
或'
,然后检查字符串的结尾。
(?<==').+?(?='(?:;|$))
说明
(?<==')
肯定在左边暗示='
.+?
匹配任意字符一次或多次非贪婪(?=
积极前瞻,断言右边是
'(?:;|$)
匹配'
,后跟交替匹配;
或断言字符串$
的结尾)
近距离正面预测