Простой Ruby Regex Вопрос - PullRequest
       6

Простой Ruby Regex Вопрос

1 голос
/ 02 января 2011

У меня есть строка в Ruby:

str = "<TAG1>Text 1<TAG1>Text 2"

Я хочу использовать gsub для получения такой строки:

want = "<TAG2>Text 1</TAG2><TAG2>Text2</TAG2>"

Другими словами, я хочу сохранить все между <TAG1> и ЛИБО: 1) следующее вхождение "

Лучшее регулярное выражение, которое я мог придумать, было:

regex = /<TAG1>(.*)(?:<|$)/

Но проблема в том, что он просто будет соответствовать всей str, где то, что я хочу, это оба совпадения в str. (Другими словами, кажется, что конец строки char ($) имеет приоритет перед символом «<» - есть ли способ перевернуть его? </p>

1 Ответ

3 голосов
/ 02 января 2011

/<TAG1>([^<]*)/ будет соответствовать этому.Если нет <, он будет идти до конца строки.В противном случае он остановится, когда достигнет <.Ваша проблема в том.соответствует <.Альтернативный способ - сделать /<TAG1>(.*?)(?:<|$)/, что делает * не жадным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...