Сколько ни читаю, а одолеть суть не могу...
Регулярные выражения - самая сложная область у Perl, PHP и JS.
Простой пример:
Типичное форумское
[URL=location title="Hint"]Address[/URL]
Как здесь нужно описать регулярое выражение, чтобы выловить и тэг URL, и location, и Hint, и Address?
А то замучался писать сам алгоритмы с разбором строк.
Или вот интерпретатор языка.
Например:
•var_2 = '• Example #1'• Commentary #2
••var_1 = "var_2 = \"• Don't cry...\" + 'Why?';" + var_2• Commentary #1 ••
Здесь мой алгоритм работает так:
Если в начале строки идёт ряд из "•", он их подсчитывает. До первого любого символа.
Затем эти "•" не должны попадаться вне строк ('...' или "..."), иначе они указывают на обрыв выражения и начало комментария.
Мой скрипт с этим справляется, но содержит много строк и довольно сложен в отладке. Одно введение новой конструкции - снова перестаёт работать и требует длительной отладки.
Могут ли и тут помочь регулярки? Чтобы легко получить три аргумента:
#1: Количество "•" вначале строки;
#2: Само выражение до конца строки или до символа "•", если он не заключём в '...' или в "...";
#3: Строка, отделённая от основного выражения символом "•". Содержит что угодно как комментарий.
Приведённые выше строки должны преобразоваться:
из
•var_2 = '• Example #1'• Commentary #2
в
#1: 1
#2: var_2 = '• Example #1'
#3: • Commentary #2
и из
••var_1 = "var_2 = \"• Don't cry...\" + 'Why?';" + var_2• Commentary #1 ••
в
#1: 2
#2: var_1 = "var_2 = \"• Don't cry...\" + 'Why?';" + var_2
#3: • Commentary #1 ••
Большое спасибо!