Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   RegExp очень нужна рекурсия и ссылочность (https://javascript.ru/forum/misc/20701-regexp-ochen-nuzhna-rekursiya-i-ssylochnost.html)

scuter 14.08.2011 12:28

RegExp очень нужна рекурсия и ссылочность
 
в регулярных выражениях есть очень много всякого,
но не хватает рекурсии, ссылочности, маркировке
ломаю над этим делом пипец как много времени

чисто для тех кто не знает или недопонял

маркировка - это когда на регулярное выражение или часть его накладывается маркер(отметина или просто называют его как то)
выглядит это примерно так

/(?tag: <\w+[^>]>)/gim

ссылочность - это когда в регулярном выражении можно ссылаться на другое регулярное выражение или пойманный результат

/(?tag: <(?name:\w+)[^>]>(tag:)<\/\2>)/gim

рекурсия — процесс повторения чего-либо самоподобным способом. Например, вложенные отражения, производимые двумя точно параллельными друг другу зеркалами, являются одной из форм бесконечной рекурсии. Данный термин имеет более специальные значения в различных областях знаний — от лингвистики до логики.

пример такой же как и выше

B@rmaley.e><e 14.08.2011 12:32

Ну можете реализовать свой движок регэкспов с блекджеком и ш рекурсией и ссылочностью, но, я думаю, этот вариант Вас не сильно устроит.
Вместо этого изворачивайтесь, используя стандартные средства. А тут, чтобы Вам что-либо посоветовать, нужно знать, для чего Вам нужны эти возможности.

scuter 14.08.2011 12:50

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 120460)
Ну можете реализовать свой движок регэкспов с блекджеком и ш рекурсией и ссылочностью, но, я думаю, этот вариант Вас не сильно устроит.
Вместо этого изворачивайтесь, используя стандартные средства. А тут, чтобы Вам что-либо посоветовать, нужно знать, для чего Вам нужны эти возможности.

переделка движка меня тоже устроила,
стандартными методами уже замучился писать,
парсер цыклизируеть выключает браузер постоянно,
ошибок тьма тьмущая при генерации кода,
и при выполнении рекурсию останавливать не так просто получается,
черновых кодов уже на 18МБ накопилось, не считая того что стёр по ходу,


а чтука нужна для выполнения множеств различных задач
к примеру разметка HTML кода и нахождение ошибок в нём.

monolithed 14.08.2011 13:13

Цитата:

Сообщение от scuter
черновых кодов уже на 18МБ

18кб?

Цитата:

Сообщение от scuter
стандартными методами уже замучился писать

личто я вижу тут только один способ - передавать строку типа '/..../' и распарсивать, но этому способу грошь цена

RX200 14.08.2011 19:32

scuter
А что значит этот код:
/(?tag: <\w+[^>]>)/gim
/(?tag: <(?name:\w+)[^>]>(tag: )<\/\2>)/gim
Особенно то что выделено? Что то я раньше такого не встречал и в справочнике по регулярным выражениям нету.

scuter 14.08.2011 20:02

Цитата:

Сообщение от RX200 (Сообщение 120531)
scuter
А что значит этот код:
/(?tag: <\w+[^>]>)/gim
/(?tag: <(?name:\w+)[^>]>(tag: )<\/\2>)/gim
Особенно то что выделено? Что то я раньше такого не встречал и в справочнике по регулярным выражениям нету.

это маркеровка т.е. какое то выражение находится в скобках,
и мы его маркируем каким то именем

в одной библиотечке такое сделали
Цитата:

Capture: (?<name>⋯)
Backreference in regex: \k<name>
Backreference in replacement text: ${name}
XRegExp("\\b (?<word>[a-z]+) \\s+ \\k<word> \\b", "gix");
xregexp.com
только вот эта штука совсем не подходит

RX200 14.08.2011 20:44

scuter
Незнаком с XRegExp.
Если я правильно понял то нужно получить все что между тегов, в которых могут быть вложенные теги, или даже пересекающиеся, и потом ещё и проанализировать?

scuter 14.08.2011 20:53

Цитата:

Сообщение от RX200 (Сообщение 120536)
scuter
Незнаком с XRegExp.
Если я правильно понял то нужно получить все что между тегов, в которых могут быть вложенные теги, или даже пересекающиеся, и потом ещё и проанализировать?

ты правильно понял,
только это одна из задач.

scuter 15.08.2011 03:27

Цитата:

Сообщение от monolithed (Сообщение 120467)
Цитата:

Сообщение от scuter (Сообщение 120465)
черновых кодов уже на 18МБ

18кб?

нет там всё правильно написано
Цитата:

Сообщение от monolithed (Сообщение 120467)
Цитата:

Сообщение от scuter (Сообщение 120465)
стандартными методами уже замучился писать

личто я вижу тут только один способ - передавать строку типа '/..../' и распарсивать, но этому способу грошь цена

я нашел 3 основных способа
1 парсить регулярку
2 своим синтаксисом частично заменить
3 движёк RegExp переделывать

tenshi 18.08.2011 19:27

http://stackoverflow.com/questions/1...732454#1732454

http://ru.wikipedia.org/wiki/%D0%9B%...%D0%B8%D0 %B7


Часовой пояс GMT +3, время: 05:34.