Ограничение Позитивного Lookahead при захвате
Я получаю некоторый текст с интервалами из потока, как,
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)
или же (?<=\=\').*(?=')
но они кажутся не подходящими.
@ Редактировать: я только что пришел с (?<=\=\').*?(?=';)
,
1 ответ
Решение
(?=';S)
не будет работать для первого и третьего примера, когда ';S
не там.
С другой стороны (?=')
Будет слишком много совпадать в первом и третьем примере.
Что вы могли бы сделать, это использовать чередование в предвкушении, чтобы проверить ;:
или же '
с последующим концом строки.
(?<==').+?(?='(?:;|$))
объяснение
(?<==')
Позитивный взгляд сзади, чтобы утверждать, что слева='
.+?
Совпадение с любым персонажем один или несколько раз без жадности(?=
Позитивный взгляд на то, что справа'(?:;|$)
Матч'
с последующим чередованием соответствия либо;
или утвердить конец строки$
)
близкий позитивный взгляд