простое регулярное выражение для склеивания текста в ruby - PullRequest
0 голосов
/ 07 мая 2010

Я использую ruby, и я хочу разделить фрагмент строки, который соответствует регулярному выражению (я думаю, это относительно просто, но у меня возникают трудности)

У меня есть несколько тысяч строк, которыевыглядеть так (в разной степени)

my_string = "adfa <b>weru</b> orua fklajdfqwieru ofaslkdfj alrjeowur woer woeriuwe  <img src=\"/images/abcde_111-222-333/111-222-333.xml/blahblahblah.jpg\" />"

Я бы хотел склеить / 111-222-333.xml (значение меняется от строки к строке, ноДостаточно сказать, что я хочу удалить часть между двумя косыми чертами, которая содержит что-то. xml .

Я надеялся найти совпадение, подобное этому

my_match = my_string.match(/\/.+?\.xml\//)

но на самом деле это захватывает "/b> orua fklajdfqwieru ofaslkdfj alrjeowur woer woeriuwe <img src=\"/images/abcde_111-222-333/111-222-333.xml/"

Я предполагал, что . +? будет соответствовать тому, что я ищу, но похоже, что он начинается с первой косой черты, которую он находит (хотя он не жадный), а затем расширяется до «.xml»).

Есть мысли о том, что я делаю неправильно?

TKS !!

1 Ответ

2 голосов
/ 07 мая 2010

Попробуйте /\/[^\/]+\.xml\//.Это приведет к тому, что части между косыми чертами не будут косыми чертами, чего нет у вашего исходного регулярного выражения.Оригинал ищет первую косую черту, затем сопоставляет что угодно, пока не найдет первую .xml/.Жадное совпадение будет искать последний .xml/, что не имеет значения в вашем случае.

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