Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.06.2015, 00:22
Кандидат Javascript-наук
Отправить личное сообщение для Cache Посмотреть профиль Найти все сообщения от Cache
 
Регистрация: 02.05.2013
Сообщений: 111

регулярные выражения - извлечение текста "без мусора"
Доброго времени суток.

Есть текст:
Код:
<td>Наличие<br>Рис фасованный: 5%<br>Гречка весовая: 36%<br>Морковка гнилая: 15%<br>Итого.....
соответственно, хочу вычленить то что между тегами <br> и заканчивающееся на знак %
но получаю:
либо последний извлеченный элемент Морковка гнилая: 15:
var str='<td>Наличие<br>Рис фасованный: 5%<br>Гречка весовая: 36%<br>Морковка гнилая: 15%<br>Итого.....';
alert(str.match(/(?:(?:<br>)(.*?)%)+/i));

либо, всю строку начиная с <br>Рис и заканчивая Морковка гнилая: 15%:
var str='<td>Наличие<br>Рис фасованный: 5%<br>Гречка весовая: 36%<br>Морковка гнилая: 15%<br>Итого.....';
alert(str.match(/((?:(?:<br>)(?:.*?)%)+)/i));


Подскажите пожалуйста, как правильно составить данное рег. выражение, с учетом того, что количество искомых фраз может разниться?


З.Ы.: можно, конечно, сделать так:
var str='<td>Наличие<br>Рис фасованный: 5%<br>Гречка весовая: 36%<br>Морковка гнилая: 15%<br>Итого.....';
alert(str.split('<br>'));
но тогда в результат попадает лишний мусор, которого хотелось бы избежать

З.Ы.Ы.: естественно - можно использовать модификатор g:
var str='<td>Наличие<br>Рис фасованный: 5%<br>Гречка весовая: 36%<br>Морковка гнилая: 15%<br>Итого.....';
alert(str.match(/(?:(?:<br>)(.*?)%)/gi));

но проблема в том, что далее идет аналогичная конструкция, только получающая данные уже иначе и соответственно вместе они не работают при установленном параметре g т.к. они не чередуются а идут друг за другом
к тому же, при использовании g, в тексте останутся <br> и %

Последний раз редактировалось Cache, 30.06.2015 в 01:19. Причина: добавление З.Ы.Ы.
Ответить с цитированием
  #2 (permalink)  
Старый 30.06.2015, 08:28
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от Cache
Подскажите пожалуйста, как правильно составить данное рег. выражение, с учетом того, что количество искомых фраз может разниться?
Как вариант...

var str='<td>Наличие<br>Рис фасованный: 5%<br>Гречка весовая: 36%<br>Морковка гнилая: 15%<br>Итого.....';
alert(str.match(/<br>([\s\S]*?(?=%))/g));

Останется только убрать
<br>
Ответить с цитированием
  #3 (permalink)  
Старый 30.06.2015, 08:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Cache,
var str='<td>Наличие<br>Рис фасованный: 5%<br>Гречка весовая: 36%<br>Морковка гнилая: 15%<br>Итого.....';
alert(str.match(/[^>]+(?=%)/g));

Последний раз редактировалось рони, 30.06.2015 в 08:40.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения zoinx2010 Общие вопросы Javascript 4 07.02.2014 16:37
Регулярные выражения фонарик Общие вопросы Javascript 29 16.03.2013 17:54
Регулярные выражения для javascript qwert_ukg Общие вопросы Javascript 3 20.04.2012 13:45
выдача всех результатов. регулярные выражения andreevich Общие вопросы Javascript 4 12.05.2010 16:52
Функции поиска и замены строк или регулярные выражения? Armen Общие вопросы Javascript 1 01.01.2010 12:35