Регулярные выражения в Java. Часть 2

Регулярные выражения в Java. Часть 2

Coding


Символьные классы

Символьные классы — это набор символов, заключенных в квадратные скобки.

[abc]a, b, или c (простой класс)

[^abc]любой символ, кроме a, b, или c (отрицание)

[a-zA-Z]символы от a до z, или от A до Z, включительно (диапазон символов)

[a-d[m-p]]от a до d, или от m до p: [a-dm-p] (объединение)

[a-z&&[def]]d, e, или f (пересечение)

[a-z&&[^bc]]от a до z, кроме b и c: [ad-z] (вычитание)

[a-z&&[^m-p]]от a до z, исключая символы от m доh p: [a-lq-z] (вычитание)

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

Самая простая форма символьных классов — перечисление символов в квадратных скобках. Например, регулярное выражение [bcr]at соответствует словам «bat», «cat», или «rat», потому что оно определяет класс, принимающий буквы «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.

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

Отрицание

Для нахождения символов исключая перечисленные, используйте метасимвол «^» в начале символьного класса. Такая техника называется отрицанием.

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.

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

Диапазоны символов

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

Несколько примеров отрицаний и диапазонов:

Объединения

В также можете использовать объединения для создания символьного класса, который объединяет два или более разных символьных класса. Для создания объединения, просто заключите один внутри другого: [0-4[6-8]]. Данное объединение создает единый символьный класс, для которого подходят числа 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.

Пересечения

Для создания единого символьного класса, который определяет все вложенные в него, используйте &&, например: [0-9&&[345]]. Это выражение определяет строки, подходящие обоим вложенным классам, т.е. цифры 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.

Вычитание

Наконец, вы можете использовать вычитания для отрицания одного или нескольких символьных класса, например: [0-9&&[^345]]. Этот пример создает класс, подходящий цифрам от 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.



Report Page