Using Java to find substring of a bigger string using Regular Expression
Использование Java для поиска подстроки строки большего размера с помощью регулярного выражения
Если у меня есть строка, подобная этой:
FOO[BAR]
Мне нужен общий способ получить строку "BAR" из строки, чтобы независимо от того, какая строка находится между квадратными скобками, она могла бы получить строку.
например
FOO[DOG] = DOG FOO[CAT] = CAT
Переведено автоматически
Ответ 1
Вы должны уметь использовать нежадные кванторы, в частности * ?. Вероятно, вам понадобится следующее:
Это даст вам шаблон, который будет соответствовать вашей строке, и поместит текст в квадратные скобки в первой группе. Взгляните на Документацию Pattern API для получения дополнительной информации.
Чтобы извлечь строку, вы могли бы использовать что-то вроде следующего:
Matcherm= MY_PATTERN.matcher("FOO[BAR]"); while (m.find()) { Strings= m.group(1); // s now contains "BAR" }
publicstatic String get_match(String s, String p) { // returns first match of p in s for first group in regular expression Matcherm= Pattern.compile(p).matcher(s); return m.find() ? m.group(1) : ""; }
publicstatic List<String> get_matches(String s, String p) { // returns all matches of p in s for first group in regular expression List<String> matches = newArrayList<String>(); Matcherm= Pattern.compile(p).matcher(s); while(m.find()) { matches.add(m.group(1)); } return matches; }