Пробел - метасимвол? (в регулярных выражениях)
Модератор: Модераторы разделов
-
QWERTYASDF
- Сообщения: 989
- Статус: Чайник со свистком
- ОС: GNU/Linux
Пробел - метасимвол?
Погуглила на тему и нашла для себя противоречие. Дело в том, что к метасимволам в регулярных выражениях относятся все те, которые не соответствуют самим себе в печатном тексте. Сюда входит класс "пробельных" символов, в который по логике входит и сам пробел (или не входит?) Но ведь символ пробела соответствует самому себе в тексте, выдаваемом по шаблону. Кроме того в "обще-абстрактных" регулярных выражениях пробелу инвариатно экранирование бэкслэшем (хотя может тут я ошибаюсь). Да и в гугле не нашла прямого утверждения вида "пробел - метасимвол". Получается, что класс пробельных символов (включая пробел) входит в категорию метасимволов за исключением пробела, что во многих пособиях на тему злостно скрывается? )
Подскажите пожалуйста )
Подскажите пожалуйста )
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Пробел - метасимвол?
QWERTYASDF
В новых RE-движках "\s", кажется, считается более предпочтительным.
В новых RE-движках "\s", кажется, считается более предпочтительным.
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Пробел - метасимвол?
с этого момента, пожалуйста, поподробнее·QWERTYASDF писал(а): ↑07.09.2012 12:43Дело в том, что к метасимволам в регулярных выражениях относятся все те, которые не соответствуют самим себе в печатном тексте.
куда «сюда»?
ну и вообще, в чём загвоздка?
символы — это не мета-символы·
пробел — символ·
следовательно, не мета-символ·
вода мокрая, снег холодный, и далее по списку·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
QWERTYASDF
- Сообщения: 989
- Статус: Чайник со свистком
- ОС: GNU/Linux
Re: Пробел - метасимвол?
sash-kan писал(а): ↑07.09.2012 15:21с этого момента, пожалуйста, поподробнее·QWERTYASDF писал(а): ↑07.09.2012 12:43Дело в том, что к метасимволам в регулярных выражениях относятся все те, которые не соответствуют самим себе в печатном тексте.
куда «сюда»?
ну и вообще, в чём загвоздка?
символы — это не мета-символы·
пробел — символ·
следовательно, не мета-символ·
вода мокрая, снег холодный, и далее по списку·
Например, в книжке Бена Форты "Регулярные выражения 10 минут на урок" (и во многих других источников в гугле ) для текстового шаблона (регулярного выражения) говорится: "метасимволы есть все символы, не соответствующие самим себе в печати". Ну, т.е. символ "a" в регулярном выражении будет означать нахождение символа "a" в текстовом файле, для поиска текста в котором создается выражение. А вот "." или "[" не будут - они метасимволы. Потом упоминается такой класс метасимволов, как пробельные "\s". Ну вот в этом контексте и вопрос - пробел " " относится к метасимволам или нет?
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Пробел - метасимвол?
QWERTYASDF
очень рад за книжку «освойте рокет-сайнс за десять минут»·
надеюсь, в оригинале там нет несуществующего понятия «класс метасимволов»·
очень рад за книжку «освойте рокет-сайнс за десять минут»·
надеюсь, в оригинале там нет несуществующего понятия «класс метасимволов»·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
Bizdelnick
- Модератор
- Сообщения: 21400
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Пробел - метасимвол?
Метасимвол \s соответствует любому пробельному символу, а пробел, не являющийся метасимволом, соответствует сам себе.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Пробел - метасимвол?
ну и не могу не посоветовать читать чуть более соответствующие здравому смыслу издания, например, фридла·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
QWERTYASDF
- Сообщения: 989
- Статус: Чайник со свистком
- ОС: GNU/Linux
Re: Пробел - метасимвол?
Bizdelnick писал(а): ↑07.09.2012 15:53Метасимвол \s соответствует любому пробельному символу, а пробел, не являющийся метасимволом, соответствует сам себе.
Вопром - пробел все-таки является или не является метасимволом в языке регулярных выражений? Была бы благодарна за однозначный ответ )
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Пробел - метасимвол?
нет, конечно·
но вы всегда можете сделать свой вариант «языка регулярных выражений»·
в котором будет и класс метасимволов, и пробёл в этом классе·
но вы всегда можете сделать свой вариант «языка регулярных выражений»·
в котором будет и класс метасимволов, и пробёл в этом классе·
кстати, придумал для него даже действие: пусть он обозначает строго нулевое количество повторений предшествующего ему символа·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
QWERTYASDF
- Сообщения: 989
- Статус: Чайник со свистком
- ОС: GNU/Linux
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Пробел - метасимвол?
а ведь формулировка-то волшебная!QWERTYASDF писал(а): ↑07.09.2012 15:35"метасимволы есть все символы, не соответствующие самим себе в печати"
из разряда «верёвка есть вервие простое»·
или лемовских сепулек·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Пробел - метасимвол?
QWERTYASDF писал(а): ↑07.09.2012 12:43Погуглила на тему и нашла для себя противоречие. Дело в том, что к метасимволам в регулярных выражениях относятся все те, которые не соответствуют самим себе в печатном тексте. Сюда входит класс "пробельных" символов, в который по логике входит и сам пробел (или не входит?) Но ведь символ пробела соответствует самому себе в тексте, выдаваемом по шаблону. Кроме того в "обще-абстрактных" регулярных выражениях пробелу инвариатно экранирование бэкслэшем (хотя может тут я ошибаюсь). Да и в гугле не нашла прямого утверждения вида "пробел - метасимвол". Получается, что класс пробельных символов (включая пробел) входит в категорию метасимволов за исключением пробела, что во многих пособиях на тему злостно скрывается? )
Подскажите пожалуйста )
пробел является обычным символом.
да, во многих реализациях слеш-пробел тоже является обычным символом. \s является метасимволом, который совпадает с пробелом, табуляциями, а также с переводом строки и возвратом каретки. Может и ещё с чем-то, зависит от реализации.
То, что пробел входит в метасимвол \s не должно вас смущать - символ K тоже входит в метасимвол \w, и тем не менее, символ K это обычный символ.
ЗЫЖ тот факт, что пробел можно экранировать - ни о чём не говорит. Большинство обычных символов можно экранировать. За исключением очень немногих, таких как \<, \>, \b, \s и так далее.
очевидно имелось ввиду, что \X совпадает только с X, а вот \< совпадает с началом слова, хотя < совпадает с "меньше".
а знаете, что написано на очень многих заборах Петербурга и Ленинградской области? Учтите, это всё переводы, а переводчики на 99% == ГСМ. Т.е. сами не понимают, что они пишут. Ей богу, тупой гуглотранслятор и то адекватней - он хотя-бы ничего не додумывает.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
-
QWERTYASDF
- Сообщения: 989
- Статус: Чайник со свистком
- ОС: GNU/Linux
Re: Пробел - метасимвол?
drBatty, и все проявившие внимание - спасибо, теперь стало немного яснее.