что такое пробельные символы

Всё (или почти всё) о пробеле

Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

История межсловного пробела

Межсловный пробел — сравнительно позднее изобретении в истории человеческой мысли. Глубоко история пробела изложена в книге Пола Санджера (Paul Saenger) «Space between Words: The Origins of Silent Reading», а также, несколько менее глубоко, в книге Иоганнеса Фридриха «История письма».

Также есть неплохая статья Антона Бизяева о пробелах и об их истории «В начале пробелов не было», которая была опубликована в 1997 году в журнале «Publish».

Вкратце, пробел появился достаточно поздно, в тех письменностях, где отсутствие разграничения слов приводило к сложности чтения (так называемое консонантное письмо, где записываются только согласные звуки). Однако в греческом и латыни, в которых записывали и гласные звуки, использование пробела было утеряно. Пол Санджер связывает это с тем, что чтение производилось вслух, что упрощало разграничение слов при восприятии текста.

Вновь пробел начал использоваться приблизительно в VII—IX вв. н. э., и эта традиция пришла из Ирландии, где у писцов и чтецов родным языком являлся древнеирландский, а религиозная литература записывалась на латыни. По-видимому, по этой причине монахи испытывали трудности с чтением вслух. Считается, что появление пробела плотно связано с постепенным переходом от чтения вслух к чтению про себя. Примерами книг на латыни с межсловными пробелами являются памятники британской литературы: Евангелие из Дарроу (VII в.) и Келлская книга (VIII—IX вв.).

В глаголице и кириллице пробел также отсутствовал, и в привычном нам смысле используется только с XVII века.

До того, как человечество изобрело наборный шрифт, никакой особенной классификации межсловных пробелов не было — ставили писцы пробелы на глазок и ставили. Напомню (мы писали об этом в статье «Выключка по ширине»), что рукопись и ксиллография относятся к способам создания текстов без подвижности литер. Естественно, пробелы могли получаться различной ширины, так как пропуски делались вручную.

Пробелы в ручном наборе

Когда подвижность литер появилась (а произошло это с появлением наборных шрифтов), появились соответственно и вопросы — а как же ставить пробелы, чтобы соблюдалась выключка по ширине?

Технология ручного набора такова, что набранная строка полностью зажимается в верстатке и в гранке, и, соответственно, должна иметь ширину, практически точно равную ширине полосы (подробнее с технологией ручного набора можно познакомиться в одноимённой книге М. В. Шульмейстера).

Строка при ручном наборе набиралась из литер (брусков, на торце которых делались выпуклые зеркальные копии букв, отпечатывающиеся на бумаге), а межсловные пробелы создавались с помощью так называемых шпаций — брусков различной толщины, у которых на торце нет печатающей поверхности. Выглядит это примерно вот так. Шпации для каждого кегля шрифта, естественно, выпускались свои, и имели различную ширину. Например, для шрифта кегля 10 пунктов (стандартный кегль для большинства текстовых изданий) выпускались шпации шириной 10, 5, 4, 3, 2 и 1 пункт.

Шпации шириной в кегль назывались кегельными или круглыми. Шпации в половину кегельной назывались полукегельными или полукруглыми. Также существует название «тонкая шпация», под которой понимают шпации толщиной 1—2 пункта для шрифта кегля 8—12 пунктов. То есть, для шрифта кегля 10 пунктов тонкая шпация обычно составляет 2 пункта (соответственно, 1⁄5 кегельной). Однако, в связи с отсутствием точного определения тонкой шпации, в руководствах издателя, редактора и верстальщика обычно говорят не об отбивке на тонкую шпацию, а об отбивке на столько-то пунктов (считая, что кегль шрифта равен 10 пунктам).

Таким образом, нужно понимать, что в зависимости от кегля шрифта доля круглой шпации (треть, четверть и т. п.) может иметь разную ширину в пунктах, и наоборот.

Традиционная ширина межсловного пробела

Итак, разобравшись с тем, что такое круглая и полукруглая шпации, перейдём к принятой в российском наборе ширине собственно межсловного пробела.

Шульмейстер пишет (стр. 94), что при наборе строки между словами ставится полукруглая. Когда строка набрана до конца, в большинстве случаев её ширина оказывается либо меньше, либо больше ширины полосы набора. Поэтому верстальщику приходится изменять ширину пробелов, уменьшая её минимум до 1⁄4 круглой и увеличивая максимум до 3⁄4 круглой (соответственно, при наборе кеглем 10 пунктов межсловные пробелы могут варьироваться от 3 до 7 пунктов). Естественно, бывают нюансы, зависящие от формата издания, но мы их касаться не будем.

Однако, Шульмейстер оговаривается, что сам по себе межсловный пробел в полукруглую великоват, и использование стандартного пробела в 1⁄3 круглой является как более экономичным с точки зрения расхода бумаги, так зачастую и более красивым. Также использование межсловного пробела в полукруглую не рекомендуется для узких шрифтов.

С появлением строкоотливных машин пробелы стали делаться равномерными по ширине в пределах одной строки, а ширина межсловного пробела стала варьироваться около 1⁄3 круглой.

Компьютерный набор и веб-типографика

В настоящее время мы ограничены возможностями используемых шрифтов, и, естественно, набором символов в Unicode. Нужно помнить, что далеко не все шрифты содержат большинство пробельных Unicode-символов.

При переходе к компьютерным системам вёрстки был совершён переход от указания ширины шпаций в пунктах к указанию ширины шпаций в долях круглой, так как шрифты стали легко масштабироваться до любого кегля, а пробельные элементы должны были оставаться пропорциональными кеглю шрифта.

Символы пробела в Unicode

Использование различных пробелов

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

В обычной вёрстке для веба для разделения слов достаточно пользоваться обычными и неразрывными межсловными пробелами.

Вместе тем, по правилам русскоязычной типографики в ряде мест должна использоваться тонкая шпация (точнее, в справочниках написано о двухпунктовой шпации, но мы будем употреблять термин «тонкая шпация» как наиболее соответствующий и с точки зрения устоявшейся терминологии, и с точки зрения внешнего вида строки при наборе).

Основные правила использования пробелов будут описаны ниже, но в целом мы рекомендуем следующий принцип для использования при вёрстке для веба.

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

Обработка пробелов браузерами и поисковиками

При подготовке материала статьи мы провели своеобразный эксперимент на специально подготовленной странице. Яндекс и Google справляются с нестандартными символами хорошо, заменяя при поиске все нестандартные пробельные элементы на обычные (мы считаем, что это — правильное поведение). То есть, они не делают разницы между текстами «два слова», «два слова», «два слова» и т. п.

Основные правила употребления пробелов

Итак, ещё раз подчеркнём, что во всех правилах, перечисленных ниже, тонкая шпация используется только в том случае, когда автор отметает риск использования посетителем сайта браузеров, неверно отображающих тонкую шпацию. К ним относятся некоторые браузеры в *nix (возможно, это связано со встроенными шрифтами), MSIE версии 6.0 и раньше, браузеры для Mac (ими можно пренебречь, так как ошибка рендеринга заключается только в ширине шпации), возможно — некоторые браузеры для мобильных телефонов и КПК.

В том случае, если использование таких браузеров вероятно, мы рекомендуем использовать вместо тонкой шпации обычный или неразрывный межсловный пробелы.

Далее мы опишем те правила расстановки пробелов, которые чаще всего, по нашим наблюдениям, нарушаются при вёрстке текстов. Более подробную информацию о правилах набора текстов можно почерпнуть, например, в «Справочнике издателя и автора» А. Э. Мильчина и Л. К. Чельцовой.

Сокращения и символы

Числа и интервалы

Знаки препинания

Источник

Урок №10. Пробельные символы

Обновл. 29 Мар 2021 |

При работе с реальными данными, такими как лог-файлы или даже пользовательский ввод, трудно не столкнуться с пробельными символами. Мы используем их в форматировании фрагментов информации, чтобы эти фрагменты было проще читать и визуально сканировать, но один лишь пробел может полностью сломать простейшее регулярное выражение.

Наиболее распространенными пробельными символами являются обычные пробелы ( ), табуляция ( \t ), новая строка ( \n ) и возврат каретки ( \r ). Кроме того, метасимвол пробельных символов \s будет соответствовать любому из вышеуказанных пробельных символов, являясь, таким образом, очень полезным при работе с необработанными данными.

ЗаданиеТекст
Соответстовать1. abcчто такое пробельные символы. task default. что такое пробельные символы фото. что такое пробельные символы-task default. картинка что такое пробельные символы. картинка task default. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.
Соответстовать2. abcчто такое пробельные символы. task default. что такое пробельные символы фото. что такое пробельные символы-task default. картинка что такое пробельные символы. картинка task default. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.
Соответстовать3. abcчто такое пробельные символы. task default. что такое пробельные символы фото. что такое пробельные символы-task default. картинка что такое пробельные символы. картинка task default. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.
Пропустить4.abcчто такое пробельные символы. task default. что такое пробельные символы фото. что такое пробельные символы-task default. картинка что такое пробельные символы. картинка task default. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Поделиться в социальных сетях:

Источник

Восполним пробелы! Всё (или почти всё) о пробеле

что такое пробельные символы. Spatien. что такое пробельные символы фото. что такое пробельные символы-Spatien. картинка что такое пробельные символы. картинка Spatien. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.Если в докомпьютерную эпоху набор текста и подготовка оригинал-макета были отдельной профессией, то ныне любой человек, установивший верстальную программу (или даже Word) способен готовить документы к печати.

В компьютерную эпоху пробелы, как самая несодержательная часть текста, часто обходят должным вниманием при подготовке изданий. Зачастую в документе присутствуют всего два вида пробелов: обыкновенный и неразрывный (в Word’е фиксированной ширины, в InDesign’е — нет). Между тем, пробелов существует около двух десятков, и некоторые из них очень пригождаются в русской типографике.

Обычный растяжимый пробел, который ставится почти везде, работает аналогично механизму линотипа: при выключке по формату полосы (в компьютерных терминах выравнивание по ширине) пробелы, выполненные в виде клинышков, опускались между словами до тех пор, пока строка не занимала всю отведённую ширину.

Неразрывный пробел ничем не отличается по ширине и растяжению от обычного пробела, но не может быть заменён переводом строки. Неразрывные пробелы необходимо ставить после почти всех однобуквенных слов (а, в, и, к, о, с, у, я) и до «б» и «ж», иногда после двухбуквенных слов в начале предложения, между числом и единицами измерений (100 грамм, 5 м), между частями названия (InDesign 5.5).

Этот список может поначалу казаться неполным, потому что в остальных случаях, где мы привыкли ставить неразрывный пробел, ставятся пробельные символы другой величины.

Итак, какие же ещё пробелы нам предлагает InDesign?

Некоторые из них имеют исключительно историческую ценность, а другие очень и очень улучшают вид издания.
Шестая ставится вокруг тире и значительно улучшает вид текста: пробелы вокруг тире не растягиваются ни при каких условиях (а также слева пробел должен быть неразрывным).

Тонкую можно ставить в математических формулах вокруг знаков +, − и прочих, а также после знака номера или параграфа. Также ею отделяются группы цифр (если их больше четырёх).

Четвёртой можно отбивать инициалы друг от друга и от фамилии, а также номера иллюстраций/схем (ил. 3). Также четвёртую можно употреблять в сокращениях вроде «и т. д.» «и т. п.».

Третья, практически неотличимая от обыкновенного пробела, находит применение в списках литературы вокруг одинарной и двойной косых черт, отделяющих составителей и названия сборников.

Полукруглую ставим в некоторых специальных случаях, например в таком: Ил. 3. В. И. Пупкин — между «3.» и «В.».

***
Напоследок хочу вручить несколько (не всегда идеально работающих) индизайновских регулярных выражений, помогающих мне с автоматической расстановкой пробелов.

Заменяет пробелы вокруг тире:
Find what: [

Источник

Регулярные выражения (regexp) — основы

Регулярные выражения (их еще называют regexp, или regex) — это механизм для поиска и замены текста. В строке, файле, нескольких файлах. Их используют разработчики в коде приложения, тестировщики в автотестах, да просто при работе в командной строке!

Чем это лучше простого поиска? Тем, что позволяет задать шаблон.

Например, на вход приходит дата рождения в формате ДД.ММ.ГГГГГ. Вам надо передать ее дальше, но уже в формате ГГГГ-ММ-ДД. Как это сделать с помощью простого поиска? Вы же не знаете заранее, какая именно дата будет.

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

А регулярное выражение позволяет задать шаблон «найди мне цифры в таком-то формате».

Для чего применяют регулярные выражения?

Удалить все файлы, начинающиеся на test (чистим за собой тестовые данные)

А еще для замены — например, чтобы изменить формат всех дат в файле. Если дата одна, можно изменить вручную. А если их 200, проще написать регулярку и подменить автоматически. Тем более что регулярные выражения поддерживаются даже простым блокнотом (в Notepad++ они точно есть).

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

В этой статье я расскажу о том, как применять регулярные выражения для поиска и замены. Разберем все основные варианты.

Содержание

Где пощупать

Любое регулярное выражение из статьи вы можете сразу пощупать. Так будет понятнее, о чем речь в статье — вставили пример из статьи, потом поигрались сами, делая шаг влево, шаг вправо. Где тренироваться:

Notepad++ (установить Search Mode → Regular expression)

Regex101 (мой фаворит в онлайн вариантах)

Инструменты есть, теперь начнём

Поиск текста

Самый простой вариант регэкспа. Работает как простой поиск — ищет точно такую же строку, как вы ввели.

Текст: Море, море, океан

Regex: море

Найдет: Море, море, океан

Выделение курсивом не поможет моментально ухватить суть, что именно нашел regex, а выделить цветом в статье я не могу. Атрибут BACKGROUND-COLOR не сработал, поэтому я буду дублировать регулярки текстом (чтобы можно было скопировать себе) и рисунком, чтобы показать, что именно regex нашел:

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Обратите внимание, нашлось именно «море», а не первое «Море». Регулярные выражения регистрозависимые!

Хотя, конечно, есть варианты. В JavaScript можно указать дополнительный флажок i, чтобы не учитывать регистр при поиске. В блокноте (notepad++) тоже есть галка «Match case». Но учтите, что это не функция по умолчанию. И всегда стоит проверить, регистрозависимая ваша реализация поиска, или нет.

А что будет, если у нас несколько вхождений искомого слова?

Текст: Море, море, море, океан

Regex: море

Найдет: Море, море, море, океан

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

По умолчанию большинство механизмов обработки регэкспа вернет только первое вхождение. В JavaScript есть флаг g (global), с ним можно получить массив, содержащий все вхождения.

А что, если у нас искомое слово не само по себе, это часть слова? Регулярное выражение найдет его:

Текст: Море, 55мореон, океан

Regex: море

Найдет: Море, 55мореон, океан

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Это поведение по умолчанию. Для поиска это даже хорошо. Вот, допустим, я помню, что недавно в чате коллега рассказывала какую-то историю про интересный баг в игре. Что-то там связанное с кораблем. Но что именно? Уже не помню. Как найти?

Если поиск работает только по точному совпадению, мне придется перебирать все падежи для слова «корабль». А если он работает по включению, я просто не буду писать окончание, и все равно найду нужный текст:

Найдет:

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Это статический, заранее заданный текст. Но его можно найти и без регулярок. Регулярные выражения особенно хороши, когда мы не знаем точно, что мы ищем. Мы знаем часть слова, или шаблон.

Поиск любого символа

. — найдет любой символ (один).

Regex: А.я

Результат:

Точка найдет вообще любой символ, включая цифры, спецсисимволы, даже пробелы. Так что кроме нормальных имен, мы найдем и такие значения:

Учтите это при поиске! Точка очень удобный символ, но в то же время очень опасный — если используете ее, обязательно тестируйте получившееся регулярное выражение. Найдет ли оно то, что нужно? А лишнее не найдет?

Точку точка тоже найдет!

Найдет:

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Но что, если нам надо найти именно точку? Скажем, мы хотим найти все файлы с расширением txt и пишем такой шаблон:

Результат:

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Да, txt файлы мы нашли, но помимо них еще и «мусорные» значения, у которых слово «txt» идет в середине слова. Чтобы отсечь лишнее, мы можем использовать позицию внутри строки (о ней мы поговорим чуть дальше).

Но если мы хотим найти именно точку, то нужно ее заэкранировать — то есть добавить перед ней обратный слеш:

Результат:

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Также мы будем поступать со всеми спецсимволами. Хотим найти именно такой символ в тексте? Добавляем перед ним обратный слеш.

Правило поиска для точки:

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Поиск по набору символов

Допустим, мы хотим найти имена «Алла», «Анна» в списке. Можно попробовать поиск через точку, но кроме нормальных имен, вернется всякая фигня:

Результат:

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Если же мы хотим именно Анну да Аллу, вместо точки нужно использовать диапазон допустимых значений. Ставим квадратные скобки, а внутри них перечисляем нужные символы:

Результат:

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Вот теперь результат уже лучше! Да, нам все еще может вернуться «Анла», но такие ошибки исправим чуть позже.

Как работают квадратные скобки? Внутри них мы указываем набор допустимых символов. Это может быть перечисление нужных букв, или указание диапазона:

[а-я] — все русские буквы в нижнем регистре от «а» до «я» (кроме «ё»)

[А-Я] — все заглавные русские буквы

[А-Яа-яЁё] — все русские буквы

[a-z] — латиница мелким шрифтом

[a-zA-Z] — все английские буквы

[В-Ю] — буквы от «В» до «Ю» (да, диапазон — это не только от А до Я)

[А-ГО-Р] — буквы от «А» до «Г» и от «О» до «Р»

Обратите внимание — если мы перечисляем возможные варианты, мы не ставим между ними разделителей! Ни пробел, ни запятую — ничего.

[а б в] — «а», «б», «в», или пробел (что может привести к нежелательному результату)

[а, б, в] — «а», «б», «в», пробел или запятая

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Единственный допустимый разделитель — это дефис. Если система видит дефис внутри квадратных скобок — значит, это диапазон:

Символ до дефиса — начало диапазона

Символ после — конец

Один символ! Не два или десять, а один! Учтите это, если захотите написать что-то типа 19. Нет, это не диапазон от 1 до 31, эта запись читается так:

Диапазон от 1 до 3

Здесь отсутствие разделителей играет злую шутку с нашим сознанием. Ведь кажется, что мы написали диапазон от 1 до 31! Но нет. Поэтому, если вы пишете регулярные выражения, очень важно их тестировать. Не зря же мы тестировщики! Проверьте то, что написали! Особенно, если с помощью регулярного выражения вы пытаетесь что-то удалить =)) Как бы не удалили лишнее.

Указание диапазона вместо точки помогает отсеять заведомо плохие данные:

Результат для обоих:

Результат для «А.я»:

^ внутри [] означает исключение:

[^ёЁ] — любой символ, кроме буквы «ё»

[^а-в8] — любой символ, кроме букв «а», «б», «в» и цифры 8

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Например, мы хотим найти все txt файлы, кроме разбитых на кусочки — заканчивающихся на цифру:

Результат:

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Так как квадратные скобки являются спецсимволами, то их нельзя найти в тексте без экранирования:

Найдет: fruits0

Не найдет: fruits[0]

Это регулярное выражение говорит «найди мне текст «fruits», а потом число 0». Квадратные скобки не экранированы — значит, внутри будет набор допустимых символов.

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Если мы хотим найти именно 0-левой элемент массива фруктов, надо записать так:

Найдет: fruits[0]

Не найдет: fruits0

А если мы хотим найти все элементы массива фруктов, мы внутри экранированных квадратных скобок ставим неэкранированные!

Найдет:

Не найдет:

Конечно, «читать» такое регулярное выражение становится немного тяжело, столько разных символов написано.

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Без паники! Если вы видите сложное регулярное выражение, то просто разберите его по частям. Помните про основу эффективного тайм-менеджмента? Слона надо есть по частям.

Допустим, после отпуска накопилась гора писем. Смотришь на нее и сразу впадаешь в уныние:

— Ууууууу, я это за день не закончу!

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

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

А если не тратить время на размышления «сколько времени это у меня займет», а сосредоточиться на конкретной задаче (в данном случае — первом письме из стопки, потом втором. ), то не успеете оглянуться, как уже всё разгребли!

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Разберем по частям регулярное выражение — fruits\[8\]

Сначала идет просто текст — «fruits».

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Потом обратный слеш. Ага, он что-то экранирует.

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Что именно? Квадратную скобку. Значит, это просто квадратная скобка в моем тексте — «fruits[»

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Дальше снова квадратная скобка. Она не экранирована — значит, это набор допустимых значений. Ищем закрывающую квадратную скобку.

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Нашли. Наш набор: 1. То есть любое число. Но одно. Там не может быть 10, 11 или 325, потому что квадратные скобки без квантификатора (о них мы поговорим чуть позже) заменяют ровно один символ.

Пока получается: fruits[«любое однозназначное число»

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Дальше снова обратный слеш. То есть следующий за ним спецсимвол будет просто символом в моем тексте.

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

А следующий символ — ]

Получается выражение: fruits[«любое однозназначное число»]

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Наше выражение найдет значения массива фруктов! Не только нулевое, но и первое, и пятое. Вплоть до девятого:

Найдет:

Не найдет:

Как найти вообще все значения массива, см дальше, в разделе «квантификаторы».

А пока давайте посмотрим, как с помощью диапазонов можно найти все даты.

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Какой у даты шаблон? Мы рассмотрим ДД.ММ.ГГГГ:

Запишем в виде регулярного выражения: 83\.43\.1594.

Напомню, что мы не можем записать диапазон 24. Потому что это будет значить не «диапазон от 1 до 31», а «диапазон от 1 до 3, плюс число 1». Поэтому пишем шаблон для каждой цифры отдельно.

В принципе, такое выражение найдет нам даты среди другого текста. Но что, если с помощью регулярки мы проверяем введенную пользователем дату? Подойдет ли такой regexp?

Давайте его протестируем! Как насчет 8888 года или 99 месяца, а?

Найдет:

Тоже найдет:

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

День месяца может быть максимум 31 — первая цифра 1

Максимальный месяц 12 — первая цифра [01]

Год или 19. или 20.. — первая цифра [12], а вторая [09]

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Вот, уже лучше, явно плохие данные регулярка отсекла. Надо признать, она отсечет довольно много тестовых данных, ведь обычно, когда хотят именно сломать, то фигачат именно «9999» год или «99» месяц.

Однако если мы присмотримся внимательнее к регулярному выражению, то сможем найти в нем дыры:

Не найдет:

Но найдет:

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Мы не можем с помощью одного диапазона указать допустимые значения. Или мы потеряем 31 число, или пропустим 39. И если мы хотим сделать проверку даты, одних диапазонов будет мало. Нужна возможность перечислить варианты, о которой мы сейчас и поговорим.

Перечисление вариантов

Квадртатные скобки [] помогают перечислить варианты для одного символа. Если же мы хотим перечислить слова, то лучше использовать вертикальную черту — |.

Найдет:

Не найдет:

Можно использовать вертикальную черту и для одного символа. Можно даже внутри слова — тогда вариативную букву берем в круглые скобки

Найдет:

Круглые скобки обозначают группу символов. В этой группе у нас или буква «н», или буква «л». Зачем нужны скобки? Показать, где начинается и заканчивается группа. Иначе вертикальная черта применится ко всем символам — мы будем искать или «Ан», или «ля»:

Найдет:

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

А если мы хотим именно «Аня» или «Аля», то перечисление используем только для второго символа. Для этого берем его в скобки.

Эти 2 варианта вернут одно и то же:

Но для замены одной буквы лучше использовать [], так как сравнение с символьным классом выполняется проще, чем обработка группы с проверкой на все её возможные модификаторы.

Давайте вернемся к задаче «проверить введенную пользователем дату с помощью регулярных выражений». Мы пробовали записать для дня диапазон 14, но он пропускает значения 33, 35, 39. Это нехорошо!

Тогда распишем ТЗ подробнее. Та-а-а-ак. Если первая цифра:

0 — вторая может от 1 до 9 (даты 00 быть не может)

1, 2 — вторая может от 0 до 9

3 — вторая только 0 или 1

Составим регулярные выражения на каждый пункт:

А теперь осталось их соединить в одно выражение! Получаем: 07|[12]9|3[01]

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

По аналогии разбираем месяц и год. Но это остается вам для домашнего задания =)

Потом, когда распишем регулярки отдельно для дня, месяца и года, собираем все вместе:

Обратите внимание — каждую часть регулярного выражения мы берем в скобки. Зачем? Чтобы показать системе, где заканчивается выбор. Вот смотрите, допустим, что для месяца и года у нас осталось выражение:

Подставим то, что написали для дня:

Как читается это выражение?

Видите проблему? Число «19» будет считаться корректной датой. Система не знает, что перебор вариантов | закончился на точке после дня. Чтобы она это поняла, нужно взять перебор в скобки. Как в математике, разделяем слагаемые.

Так что запомните — если перебор идет в середине слова, его надо взять в круглые скобки!

Найдет:

Найдет:

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Итого, если мы хотим указать допустимые значения:

Одного символа — используем []

Нескольких символов или целого слова — используем |

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Метасимволы

Если мы хотим найти число, то пишем диапазон 5.

Если букву, то [а-яА-ЯёЁa-zA-Z].

А есть ли другой способ?

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Есть! В регулярных выражениях используются специальные метасимволы, которые заменяют собой конкретный диапазон значений:

Символ

Эквивалент

Пояснение

Буквенный или цифровой символ или знак подчёркивания

Любой символ, кроме буквенного или цифрового символа или знака подчёркивания

Вообще любой символ

Это самые распространенные символы, которые вы будете использовать чаще всего. Но давайте разберемся с колонкой «эквивалент». Для \d все понятно — это просто некие числа. А что такое «пробельные символы»? В них входят:

Символ

Пояснение

Возврат каретки (Carriage return, CR)

Перевод строки (Line feed, LF)

Вертикальная табуляция (vertical tab)

Конец страницы (Form feed)

Возврат на 1 символ (Backspace)

Из них вы чаще всего будете использовать сам пробел и перевод строки — выражение «\r\n». Напишем текст в несколько строк:

Для регулярного выражения это:

А вот что такое backspace в тексте? Как его можно увидеть вообще? Это же если написать символ и стереть его. В итоге символа нет! Неужели стирание хранится где-то в памяти? Но тогда это было бы ужасно, мы бы вообще ничего не смогли найти — откуда нам знать, сколько раз текст исправляли и в каких местах там теперь есть невидимый символ [\b]?

что такое пробельные символы. image loader. что такое пробельные символы фото. что такое пробельные символы-image loader. картинка что такое пробельные символы. картинка image loader. Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Выдыхаем — этот символ не найдет все места исправления текста. Просто символ backspace — это ASCII символ, который может появляться в тексте (ASCII code 8, или 10 в octal). Вы можете «создать» его, написать в консоли браузера (там используется JavaScript):

Мы написали «abc», а потом стерли «b» и «с». В итоге пользователь в консоли их не видит, но они есть. Потому что мы прямо в коде прописали символ удаления текста. Не просто удалили текст, а прописали этот символ. Вот такой символ регулярное выражение [\b] и найдет.

Но обычно, когда мы вводим \s, мы имеем в виду пробел, табуляцию, или перенос строки.

Ок, с этими эквивалентами разобрались. А что значит [[:word:]]? Это один из способов заменить диапазон. Чтобы запомнить проще было, написали значения на английском, объединив символы в классы. Какие есть классы:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *