@ColdSpirit

Как составить регулярку?

В общем есть злосчастный текст, который нужно распарсить, думаю, на javascript. Кроме regexp для парсинга ничего не нашел. Если знаете какие-нибудь альтернативы - буду рад узнать их тоже. Сам долго мучился, но у меня возникла проблема в построении групп и исключении ненужных элементов.
Вот текст, похожий структурой на оригинал. Ключевые значения оставлял со знаком '=' чтобы не было путаницы
one=1                             // 'one=', '1'
badstring=13                      // эту строку нужно исключить полностью, потому что ключ 'badstring'
two=(test|ttwo)(22)               // 'two=', test<-нам не нужен, 'ttwo', '22', 'ttwoo', '222', 'ttwwoo', '2222', ...
(test|ttwoo)(222)
(test|ttwwoo)(2222)
//так может продолжаться долго
null=                             //'null='
<this>(is)bad=string(13|too)      // эту строку исключаем, она вне формата

Нужно, чтобы в результате значения выводились по одному, это когда в выражении одна группа, т.е.:
'one'=, '1', 'two=', 'ttwo', '22', ...
либо, если так невозможно сделать, чтобы учитывались переносы строк и случайное количество групп, как в комментариях к тексту.

#Дополнение
В общем, проблему решил в notepad++ в несколько шагов, с помощью замены текста по регуляркам - сначала удалил лишние строки, потом распарсил что осталось.
  • Вопрос задан
  • 296 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Регулярные выражения парсят хорошо только регулярную грамматику.

Вообще сложно что-то предложить так как совсем не понятно что вам надо парсить. Предоставьте пример исходного текста и что надо получить в итоге. Мне вообще кажется что вы какой-то XML хотите разобрать...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@vilgeforce
Раздолбай и программист
lex + yacc или bison в помощь.
Ответ написан
Если вам нужны именно сами значения то можно попробовтаь прсто во так
^[a-Z]{1,200}=[0-9]{1,200}]\s
Конечно регулярка спорная но работатьь должна
с вашей партянки текста она вытащит все
one=1
badstring=13
А лучше распишите конеретный кейс что сделать и конкретный файл.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы