Использование \r \n в регулярных выражениях
От: VMusulainen  
Дата: 03.08.05 07:45
Оценка:
Приветствую.
Нахожусь в некотором замешательстве.
В библиотеке регулярных выражений, что я сейчас использую (для языка который я сейчас использую ,
компиляция выражений, содержащих спец. символы перевода строки или возврата на начало строки внутри квадратных скобок дает ошибку. То есть, например, '[\w\r]+' или '[\w\n]+' дает ошибку. Тогда как компиляция '\w\r' ошибки не даст.
Вопрос, это проблемы реализации библиотеки либо в Posix или в perl синтаксисе так делать нельзя?
Я намеренно не говорю пока о языке и библиотеке. Вопрос в других языках и библиотеках рег. выражений можно так делать или нет.
Re: Использование \r \n в регулярных выражениях
От: Eugeny__ Украина  
Дата: 03.08.05 11:40
Оценка:
Здравствуйте, VMusulainen, Вы писали:

VM>Приветствую.

VM>Нахожусь в некотором замешательстве.
VM>В библиотеке регулярных выражений, что я сейчас использую (для языка который я сейчас использую ,
VM>компиляция выражений, содержащих спец. символы перевода строки или возврата на начало строки внутри квадратных скобок дает ошибку. То есть, например, '[\w\r]+' или '[\w\n]+' дает ошибку. Тогда как компиляция '\w\r' ошибки не даст.
VM>Вопрос, это проблемы реализации библиотеки либо в Posix или в perl синтаксисе так делать нельзя?
VM>Я намеренно не говорю пока о языке и библиотеке. Вопрос в других языках и библиотеках рег. выражений можно так делать или нет.

А что значит "дает ошибку"? Какую ошибку-то?
В большинстве регэкспов принято, что внутри [] сочетание \w, например, воспринимается как "Символ '\' или символ 'w'".
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[2]: Использование \r \n в регулярных выражениях
От: VMusulainen  
Дата: 04.08.05 03:47
Оценка:
Здравствуйте, Eugeny__, Вы писали:

E__>А что значит "дает ошибку"? Какую ошибку-то?

Ошибка неверного использования backslashes.

E__>В большинстве регэкспов принято, что внутри [] сочетание \w, например, воспринимается как "Символ '\' или символ 'w'".


Во как, это значит, что в большинстве регэкспов нужно в charset вместо \w перечислять A-Za-z0-9_ ?
Иными словами [\w] <> [A-Za-z0-9_] ?

В моем регэкспе это все таки равные вещи.

Ок, тогда как правильно задать в [...] символы перевода строки и возврата каретки?
Re[3]: Использование \r \n в регулярных выражениях
От: Кодт Россия  
Дата: 04.08.05 07:53
Оценка: +1
Здравствуйте, VMusulainen, Вы писали:

E__>>А что значит "дает ошибку"? Какую ошибку-то?

VM>Ошибка неверного использования backslashes.

E__>>В большинстве регэкспов принято, что внутри [] сочетание \w, например, воспринимается как "Символ '\' или символ 'w'".


VM>Во как, это значит, что в большинстве регэкспов нужно в charset вместо \w перечислять A-Za-z0-9_ ?

VM>Иными словами [\w] <> [A-Za-z0-9_] ?

VM>В моем регэкспе это все таки равные вещи.


VM>Ок, тогда как правильно задать в [...] символы перевода строки и возврата каретки?


Сформулируем по-другому: как задать регексп, проверяющий — является ли символ буквоцифой, cr или lf ?
Ответ очень прост: /(\w|\r|\n)/
Плюсики и звёздочки за скобкой расставь сам по вкусу.

и не надо париться с [].
Перекуём баги на фичи!
Re[3]: Использование \r \n в регулярных выражениях
От: Eugeny__ Украина  
Дата: 04.08.05 10:00
Оценка:
Здравствуйте, VMusulainen, Вы писали:

VM>Здравствуйте, Eugeny__, Вы писали:


E__>>А что значит "дает ошибку"? Какую ошибку-то?

VM>Ошибка неверного использования backslashes.

E__>>В большинстве регэкспов принято, что внутри [] сочетание \w, например, воспринимается как "Символ '\' или символ 'w'".


VM>Во как, это значит, что в большинстве регэкспов нужно в charset вместо \w перечислять A-Za-z0-9_ ?

А если нужно будет юникодные слова определять? Долго будешь перечислять .
Правильнее использовать круглые скобки(лучше не запоминающие — думаю ясно, почему) со знаком '|'. Но нужно помнить, что такие конструкции работают все-таки медленнее символьных последовательностей, и потому злоупотреблять ими не стоит.
VM>Иными словами [\w] <> [A-Za-z0-9_] ?
Да, часто это так(и в оригинальных перловских RE по-моему так и было, хотя не ручаюсь). И обычно в документации к либе описано, как ведут себя [].
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.