Spec-Zone .ru
спецификации, руководства, описания, API
След: Существенные Классы
Урок: Регулярные выражения
Классы символов
Домашняя страница > Существенные Классы > Регулярные выражения

Классы символов

Если Вы просматриваете Pattern Спецификация class, Вы будете видеть, что таблицы суммируют поддерживаемые конструкции регулярного выражения. В разделе "Классов символов" Вы найдете следующее:

Создать Описание
[abc] a, b, или c (простой class)
[^abc] Любой символ кроме a, b, или c (отрицание)
[a-zA-Z] через z, или через Z, содержащий (диапазон)
[a-d[m-p]] через d, или м. через p: [a-dm-p] (объединение)
[a-z&&[def]] d, e, или f (пересечение)
[a-z&&[^bc]] через z, за исключением b и c: [тесло] (вычитание)
[a-z&&[^m-p]] через z, и не м. через p: [a-lq-z] (вычитание)

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


Отметьте: слово "class" во фразе "символьный class" не обращается к a .class файл. В контексте регулярных выражений символьный class является рядом символов, включенных в пределах квадратных скобок. Это определяет символы, которые будут успешно соответствовать единственный символ от данной строки ввода.

Простые Классы

Наиболее каноническая форма символьного class должна просто поместить ряд символов бок о бок в пределах квадратных скобок. Например, регулярное выражение [bcr]at будет соответствовать "bat" слова, "кошка", или "крыса", потому что она определяет символьный class (принимающий или "b", "c", или "r") как его первый символ.

 
Enter your regex: [bcr]at
Enter input string to search: bat
I found the text "bat" starting at index 0 and ending at index 3.

Enter your regex: [bcr]at
Enter input string to search: cat
I found the text "cat" starting at index 0 and ending at index 3.

Enter your regex: [bcr]at
Enter input string to search: rat
I found the text "rat" starting at index 0 and ending at index 3.

Enter your regex: [bcr]at
Enter input string to search: hat
No match found.

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

Отрицание

Чтобы соответствовать все символы кроме перечисленных, вставьте"^"метасимвол в начале символьного class. Этот метод известен как отрицание.

 
Enter your regex: [^bcr]at
Enter input string to search: bat
No match found.

Enter your regex: [^bcr]at
Enter input string to search: cat
No match found.

Enter your regex: [^bcr]at
Enter input string to search: rat
No match found.

Enter your regex: [^bcr]at
Enter input string to search: hat
I found the text "hat" starting at index 0 and ending at index 3.

Соответствие успешно, только если первый символ строки ввода не содержит ни одного из символов, определенных символьным class.

Диапазоны

Иногда Вы будете хотеть определить символьный class, который включает диапазон значений, таких как буквы "через h" или номера "1 - 5". Чтобы определить диапазон, просто вставьте"-"метасимвол между первым и последним символом, который будет соответствующим, такой как [1-5] или [a-h]. Можно также поместить различные диапазоны друг около друга в пределах class, чтобы далее развернуть возможности соответствия. Например, [a-zA-Z] будет соответствовать любую букву алфавита: к z (нижний регистр) или от A до Z (верхний регистр).

Вот некоторые примеры диапазонов и отрицания:

Enter your regex: [a-c]
Enter input string to search: a
I found the text "a" starting at index 0 and ending at index 1.

Enter your regex: [a-c]
Enter input string to search: b
I found the text "b" starting at index 0 and ending at index 1.

Enter your regex: [a-c]
Enter input string to search: c
I found the text "c" starting at index 0 and ending at index 1.

Enter your regex: [a-c]
Enter input string to search: d
No match found.

Enter your regex: foo[1-5]
Enter input string to search: foo1
I found the text "foo1" starting at index 0 and ending at index 4.

Enter your regex: foo[1-5]
Enter input string to search: foo5
I found the text "foo5" starting at index 0 and ending at index 4.

Enter your regex: foo[1-5]
Enter input string to search: foo6
No match found.

Enter your regex: foo[^1-5]
Enter input string to search: foo1
No match found.

Enter your regex: foo[^1-5]
Enter input string to search: foo6
I found the text "foo6" starting at index 0 and ending at index 4.

Объединения

Можно также использовать объединения, чтобы создать единственный символьный class, состоявший из двух или больше отдельных классов символов. Чтобы создать объединение, просто вложите один class в другом, такой как [0-4[6-8]]. Это определенное объединение создает единственный символьный class, который соответствует номера 0, 1, 2, 3, 4, 6, 7, и 8.

Enter your regex: [0-4[6-8]]
Enter input string to search: 0
I found the text "0" starting at index 0 and ending at index 1.

Enter your regex: [0-4[6-8]]
Enter input string to search: 5
No match found.

Enter your regex: [0-4[6-8]]
Enter input string to search: 6
I found the text "6" starting at index 0 and ending at index 1.

Enter your regex: [0-4[6-8]]
Enter input string to search: 8
I found the text "8" starting at index 0 and ending at index 1.

Enter your regex: [0-4[6-8]]
Enter input string to search: 9
No match found.

Пересечения

Чтобы создать единственный символьный class, соответствующий только символы, характерные для всех его вложенных классов, использовать &&, как в [0-9&&[345]]. Это определенное пересечение создает единственный символьный class, соответствующий только числа, характерные для обоих классов символов: 3, 4, и 5.

 
Enter your regex: [0-9&&[345]]
Enter input string to search: 3
I found the text "3" starting at index 0 and ending at index 1.

Enter your regex: [0-9&&[345]]
Enter input string to search: 4
I found the text "4" starting at index 0 and ending at index 1.

Enter your regex: [0-9&&[345]]
Enter input string to search: 5
I found the text "5" starting at index 0 and ending at index 1.

Enter your regex: [0-9&&[345]]
Enter input string to search: 2
No match found.

Enter your regex: [0-9&&[345]]
Enter input string to search: 6
No match found.

И вот пример, который показывает пересечение двух диапазонов:

 
Enter your regex: [2-8&&[4-6]]
Enter input string to search: 3
No match found.

Enter your regex: [2-8&&[4-6]]
Enter input string to search: 4
I found the text "4" starting at index 0 and ending at index 1.

Enter your regex: [2-8&&[4-6]]
Enter input string to search: 5
I found the text "5" starting at index 0 and ending at index 1.

Enter your regex: [2-8&&[4-6]]
Enter input string to search: 6
I found the text "6" starting at index 0 and ending at index 1.

Enter your regex: [2-8&&[4-6]]
Enter input string to search: 7
No match found.

Вычитание

Наконец, можно использовать вычитание, чтобы инвертировать один или более вложенные классы символов, такой как [0-9&&[^345]]. Этот пример создает единственный символьный class, который соответствует все от 0 до 9, кроме номеров 3, 4, и 5.

 
Enter your regex: [0-9&&[^345]]
Enter input string to search: 2
I found the text "2" starting at index 0 and ending at index 1.

Enter your regex: [0-9&&[^345]]
Enter input string to search: 3
No match found.

Enter your regex: [0-9&&[^345]]
Enter input string to search: 4
No match found.

Enter your regex: [0-9&&[^345]]
Enter input string to search: 5
No match found.

Enter your regex: [0-9&&[^345]]
Enter input string to search: 6
I found the text "6" starting at index 0 and ending at index 1.

Enter your regex: [0-9&&[^345]]
Enter input string to search: 9
I found the text "9" starting at index 0 and ending at index 1.

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


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Строковые литералы
Следующая страница: Предопределенные Классы символов