Как извлечь параметр и значения из строки с помощью регулярных выражений - PullRequest
0 голосов
/ 02 июля 2019

Мне нужно извлечь параметр и значение этого параметра из строки ((created_date{[1976-03-06T23:59:59.999Z TO *]}|1)).Здесь param создан_дата.Значение равно 1976-03-06T23:59:59.999Z TO *, где * обозначает отсутствие ограничений.Мне нужно извлечь данные, как показано ниже, то есть это должен быть массив строк.

created_date
1976-03-06T23:59:59.999Z
*
1

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

String str = "((created_date{[1976-03-06T23:59:59.999Z TO *]}|1))";
String patt = "\\((.*)\\{(.*)\\}\\|(1|0)\\)";
Pattern p = Pattern.compile(patt);
Matcher m = p.matcher(str);
MatchResult result = m.toMatchResult();
System.out.println(result.group(1));

similary result.group(2) и 3 .. в зависимости от result.groupCount().

Мне нужно извлечь данные, как показано ниже i, e это должен быть массивстрока.

created_date

1976-03-06T23:59:59.999Z

*

1

1 Ответ

1 голос
/ 02 июля 2019

Вы можете использовать следующее:

String str = "((created_date{[1976-03-06T23:59:59.999Z TO *]}|1))";
String patt = "\\(\\(([^{]+)\\{\\[([^ ]+) TO ([^]]+)]}\\|([01])\\)\\)";
Pattern p = Pattern.compile(patt);
Matcher m = p.matcher(str);
if (m.matches()) {
    System.out.println(m.group(1));
    System.out.println(m.group(2));
    System.out.println(m.group(3));
    System.out.println(m.group(4));
}

Попробуйте здесь !

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

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