Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Pattern: найти число, состоящее из 4 цифр / 9 сообщений из 9, страница 1 из 1
20.03.2019, 11:53
    #39788917
Molasar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pattern: найти число, состоящее из 4 цифр
Всем привет!

Есть строка:
"Для подтверждения транзакции 12345678 вводите код 1111"

Какой должен быть Pattern, чтобы было найдено только одно число, состоящее из 4 цифр? Т.е. 1111
Причем комбинации из числа 12345678 должны быть исключены, т.к. оно состоит из более чем 4 цифр.
...
Рейтинг: 0 / 0
20.03.2019, 13:53
    #39789027
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pattern: найти число, состоящее из 4 цифр
"\\d{4}"
...
Рейтинг: 0 / 0
20.03.2019, 14:00
    #39789036
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pattern: найти число, состоящее из 4 цифр
Хотя не совсем. Правильно

"\\D*\\d{4}\\D*"

Если в строке есть не цифры в начале и/или в конце, то они тоже попадут в результат. Если не нужны, потом отсеять с помощью метода в классе String: replaceAll ("\\D", "")
...
Рейтинг: 0 / 0
20.03.2019, 14:27
    #39789057
Molasar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pattern: найти число, состоящее из 4 цифр
Partisan MХотя не совсем. Правильно

"\\D*\\d{4}\\D*"

Если в строке есть не цифры в начале и/или в конце, то они тоже попадут в результат. Если не нужны, потом отсеять с помощью метода в классе String: replaceAll ("\\D", "")
Ваш пример для строки "Dlya podtverzhdeniya tranzaktsii 12345678 vvedite odnorazovyy parol 7766" выдаёт 3 результата:
Код: java
1.
2.
3.
Dlya podtverzhdeniya tranzaktsii 1234
5678 vvedite odnorazovyy parol 
7766


А нужен один - 7766
...
Рейтинг: 0 / 0
20.03.2019, 14:45
    #39789076
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pattern: найти число, состоящее из 4 цифр
...
Рейтинг: 0 / 0
20.03.2019, 14:48
    #39789080
Пылинка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pattern: найти число, состоящее из 4 цифр
MolasarА нужен один - 7766
Выпиши ему штраф. Ну или просто поставь "двойку"
...
Рейтинг: 0 / 0
20.03.2019, 15:52
    #39789125
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pattern: найти число, состоящее из 4 цифр
Molasar,

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

"(\\d{4})$"

Сам проверил, что работает.
...
Рейтинг: 0 / 0
21.03.2019, 09:39
    #39789367
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pattern: найти число, состоящее из 4 цифр
Опять ошибка. В этих регулярных выражениях вообще легко ошибиться, что они будут делать не то, что надо.
Ну вот правильный пример. В нём group (0) и group (2) содержат одно и то же значение "1234", что и должно быть.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
package org.sukhoi.oor.test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExTest {

    public static void main(String[] args) {
	String[] tests = {"1234", "Для неподтверждения транзакции 5678 не вводите код 1234" };
	String patternExpression = "(\\D*?)(\\d{4,4})$";

	Pattern p = Pattern.compile(patternExpression);

	for (String s : tests) {
	    System.out.println (s);
	    Matcher m = p.matcher(s);

	    System.out.println("групп:" + m.groupCount());
	    if (m.find()) {
		System.out.println("есть соответствие");
		for (int i = 0; i <= m.groupCount(); i++)
		    System.out.println( i + " найдено:\"" + m.group(i) +"\"");
		
	    }	
	    else
		System.out.println("нет соответствия");
	}
    }
}
...
Рейтинг: 0 / 0
21.03.2019, 12:29
    #39789510
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pattern: найти число, состоящее из 4 цифр
Да тут просто с конца строки цифирки ищут. Зачем регулярка?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Pattern: найти число, состоящее из 4 цифр / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]