Поиск…


Сопоставьте символ с одной цифрой, используя [0-9] или \ d (Java)

[0-9] и \d являются эквивалентными шаблонами (если только ваш механизм Regex не поддерживает кодировку Unicode, а \d также совпадает с такими, как ②). Они будут совпадать с символом одной цифры, чтобы вы могли использовать любую нотацию, которую вы считаете более читаемой.

Создайте строку шаблона, который вы хотите сопоставить. Если вы используете нотацию \ d, вам нужно будет добавить вторую обратную косую черту, чтобы избежать первой обратной косой черты.

String pattern = "\\d";

Создайте объект Pattern. Передайте строку шаблона в метод compile ().

Pattern p = Pattern.compile(pattern);

Создайте объект Matcher. Передайте строку, которую вы ищете, чтобы найти шаблон в методе matcher (). Проверьте, найден ли шаблон.

Matcher m1 = p.matcher("0");
m1.matches(); //will return true

Matcher m2 = p.matcher("5");
m2.matches(); //will return true

Matcher m3 = p.matcher("12345");
m3.matches(); //will return false since your pattern is only for a single integer

Соответствие различным номерам

[ab] где a и b - цифры в диапазоне от 0 до 9

[3-7] will match a single digit in the range 3 to 7.

Соответствие нескольких цифр

\d\d       will match 2 consecutive digits
\d+        will match 1 or more consecutive digits
\d*        will match 0 or more consecutive digits
\d{3}      will match 3 consecutive digits
\d{3,6}    will match 3 to 6 consecutive digits
\d{3,}     will match 3 or more consecutive digits

\d в приведенных выше примерах можно заменить на ряд чисел:

[3-7][3-7]    will match 2 consecutive digits that are in the range 3 to 7
[3-7]+        will match 1 or more consecutive digits that are in the range 3 to 7
[3-7]*        will match 0 or more consecutive digits that are in the range 3 to 7
[3-7]{3}      will match 3 consecutive digits that are in the range 3 to 7
[3-7]{3,6}    will match 3 to 6 consecutive digits that are in the range 3 to 7
[3-7]{3,}     will match 3 or more consecutive digits that are in the range 3 to 7

Вы также можете выбрать определенные цифры:

[13579]       will only match "odd" digits
[02468]       will only match "even" digits
1|3|5|7|9     another way of matching "odd" digits - the | symbol means OR

Соответствие номеров в диапазонах, содержащих более одной цифры:

\d|10        matches 0 to 10    single digit OR 10.  The | symbol means OR
[1-9]|10     matches 1 to 10    digit in range 1 to 9 OR 10
[1-9]|1[0-5] matches 1 to 15    digit in range 1 to 9 OR 1 followed by digit 1 to 5
\d{1,2}|100  matches 0 to 100   one to two digits OR 100

Соответствующие числа, делящиеся на другие числа:

\d*0         matches any number that divides by 10  - any number ending in 0
\d*00        matches any number that divides by 100 - any number ending in 00
\d*[05]      matches any number that divides by 5   - any number ending in 0 or 5
\d*[02468]   matches any number that divides by 2   - any number ending in 0,2,4,6 or 8

совпадающие числа, которые делятся на 4 - любое число, которое равно 0, 4 или 8 или заканчивается в 00, 04, 08, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60 , 64, 68, 72, 76, 80, 84, 88, 92 или 96

[048]|\d*(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)

Это можно сократить. Например, вместо использования 20|24|28 мы можем использовать 2[048] . Кроме того, поскольку 40, 60 и 80 имеют один и тот же шаблон, мы можем их включить: [02468][048] а остальные имеют шаблон [13579][26] . Таким образом, вся последовательность может быть уменьшена до:

[048]|\d*([02468][048]|[13579][26])    - numbers divisible by 4

Соответствующие номера, которые не имеют такого шаблона, как те, которые делятся на 2,4,5,10 и т. Д., Не всегда могут выполняться лаконично, и вам обычно приходится прибегать к ряду чисел. Например, сопоставление всех чисел, делящихся на 7 в диапазоне от 1 до 50, можно сделать простым перечислением всех этих чисел:

7|14|21|28|35|42|49

or you could do it this way

7|14|2[18]|35|4[29]

Соответствие пробелов ведущего / конечного пробела

Трейлинг пространства

\s*$ : Это будет соответствовать любому ( * ) пробелу ( \s ) в конце ( $ ) текста

Ведущие пространства

^\s* : Это будет соответствовать любому ( * ) пробелу ( \s ) в начале ( ^ ) текста

замечания

\s является общим метасимволом для нескольких движков RegExp и предназначен для захвата пробельных символов (например, пробелов, новых строк и вкладок). Примечание : он, вероятно , не будет записывать все символы пробела в Юникоде . Проверьте информацию о своих двигателях, чтобы быть уверенным в этом.

Сопоставьте любые поплавки

[\+\-]?\d+(\.\d*)?

Это будет соответствовать любому подписанному float, если вы не хотите знаков или анализируете уравнение remove [\+\-]? поэтому у вас есть \d+(\.\d+)?

Объяснение:

  • \d+ соответствует любому целому числу
  • ()? означает, что содержимое круглых скобок является необязательным, но всегда должно появляться вместе
  • '\'. match '.', мы должны избегать этого, так как '.' обычно соответствует любому символу

Таким образом, это выражение будет соответствовать

5
+5
-5
5.5
+5.5
-5.5

Выбор определенной строки из списка на основе слова в определенном месте

У меня есть следующий список:

1. Alon Cohen
2. Elad Yaron
3. Yaron Amrani
4. Yogev Yaron

Я хочу выбрать первое имя ребят с фамилией Ярона.

Поскольку я не забочусь о том, что это такое, я просто поставлю его как любую цифру и соответствующую точку и пробел после него с начала строки, например: ^[\d]+\.\s ,

Теперь нам нужно будет сопоставить пространство и первое имя, так как мы не можем определить, будут ли они капитальными или малыми буквами, которые мы будем [a-zA-Z]+\s : [a-zA-Z]+\s или [aZ]+\s и также может быть [\w]+\s .

Теперь мы укажем требуемую фамилию, чтобы получить только строки, содержащие Ярон в качестве фамилии (в конце строки): \sYaron$ .

Объединим все это ^[\d]+\.\s[\w]+\sYaron$ .

Пример: https://regex101.com/r/nW4fH8/1



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow