Пара баллов:
Javadoc для Matcher # group сообщает:
IllegalStateException - Если совпадение еще не было предпринято, или если предыдущая операция сопоставления не удалась
То есть перед использованием группы необходимо сначала использовать m.matches
(для сопоставления всей последовательности) или m.find
(для сопоставления подпоследовательности).
Во-вторых, вы на самом деле хотите m.group(1)
, так как m.group(0)
- это весь шаблон.
На самом деле, это не так важно, поскольку рассматриваемое регулярное выражение начинается и заканчивается круглыми скобками, так что группа (0) - это та же строка, что и группа (1), но было бы важно, чтобы ваше регулярное выражение выглядело как : "TITLE = (\".*\")"
Пример кода:
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.junit.Test;
@SuppressWarnings("serial")
public class MatcherTest {
@Test(expected = IllegalStateException.class)
public void testIllegalState() {
List<String> array = new ArrayList<String>() {{ add("Title: \"blah\""); }};
Pattern p = Pattern.compile("(\".*\")");
Matcher m = p.matcher(array.get(0).toString());
System.out.println("Title : " + m.group(0));
}
@Test
public void testLegal() {
List<String> array = new ArrayList<String>() {{ add("Title: \"blah\""); }};
Pattern p = Pattern.compile("(\".*\")");
Matcher m = p.matcher(array.get(0).toString());
if (m.find()) {
System.out.println("Title : " + m.group(1));
}
}
}