Приветствую.
Нахожусь в некотором замешательстве.
В библиотеке регулярных выражений, что я сейчас использую (для языка который я сейчас использую ,
компиляция выражений, содержащих спец. символы перевода строки или возврата на начало строки внутри квадратных скобок дает ошибку. То есть, например, '[\w\r]+' или '[\w\n]+' дает ошибку. Тогда как компиляция '\w\r' ошибки не даст.
Вопрос, это проблемы реализации библиотеки либо в Posix или в perl синтаксисе так делать нельзя?
Я намеренно не говорю пока о языке и библиотеке. Вопрос в других языках и библиотеках рег. выражений можно так делать или нет.
Здравствуйте, 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 в регулярных выражениях
Здравствуйте, Eugeny__, Вы писали:
E__>А что значит "дает ошибку"? Какую ошибку-то?
Ошибка неверного использования backslashes.
E__>В большинстве регэкспов принято, что внутри [] сочетание \w, например, воспринимается как "Символ '\' или символ 'w'".
Во как, это значит, что в большинстве регэкспов нужно в charset вместо \w перечислять A-Za-z0-9_ ?
Иными словами [\w] <> [A-Za-z0-9_] ?
В моем регэкспе это все таки равные вещи.
Ок, тогда как правильно задать в [...] символы перевода строки и возврата каретки?
Re[3]: Использование \r \n в регулярных выражениях
Здравствуйте, 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 в регулярных выражениях
Здравствуйте, 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.