2013-11-02 7 views
2

У меня есть несколько строк, которые имеют формат, как это:Regex для извлечения текста после определенного слова между кавычками

"text that comes before\"start\":\"Desired Info\"text that comes after" 

Я хотел бы извлечь только «Желаемая Info». Ему всегда будет предшествовать "\"start\":", и это будет отображаться только один раз в строке. Какое регулярное выражение можно использовать для этого?

+0

Это может быть яснее, если вы представили строку без всех побегов, заключая его в одинарных кавычках: '' текст, который идет перед „стартом“: „Желаемой информация“ текст, который приходит после ' '. –

ответ

2

Это должно работать:

s = "text that comes before\"start\":\"Desired Info\"text that comes after" 

s[/(?<="start":")[^"]*(?=")/] 
# => "Desired Info" 
+0

Мне любопытно, для чего нужен '.'. – pguardiario

+0

@pguardiario Это не было необходимо. Спасибо за указание. – sawa

0

Здесь: это регулярное выражение:

"start":"(.*)" 

В коде:

match = /"start":(.*)"/.match("text that comes before\"start\":\"Desired Info\"text that comes after"); 

if match 
    print match[1] 
end 
+1

Вы отбросили '' 'после': ', перейдя из регулярного выражения в' match = ... '. Это приведет к самоуничтожению - no thx reqd. –

+0

Вы также захотите сделать'. * ' жадный, добавив «?» – pguardiario

+0

Хорошая точка, @pguardiario или замените '. *' на '[^"] * '. –

-2
(?:\\"start\\":\\")(.+)(?:\\") 

"Желаемая Info" в NON ИГНОРИРУЕМЫХ группа захвата.

Смежные вопросы