Я думаю, что ваша проблема может быть в String
строках вверху.Вы не можете объявить литерал String
в нескольких строках в Java, вам нужно разделить их \n
символами:
String text = "Lots of text...\nString=Value\nPackageName=com.company.package\nString=Value";
Чтобы сделать его более читабельным, вы можете сделать это:
String text = "Lots of text...\n"
+ "String=Value\n"
+ "PackageName=com.company.package\n"
+ "String=Value";
Как только это изменение внесено, предоставленный вами код отлично работает для меня на JDK6.
Тем не менее, здесь немного улучшено регулярное выражение:
Pattern pattern = Pattern.compile("PackageName\\s*=\\s*(.*)");
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
String packageName = matcher.group(1);
}
Единственное изменение, которое яСделано было добавить \\s*
: это означает, что любой пробел (или ни один), поэтому вы можете поставить PackageName = abc
и заставить его работать (обратите внимание, что сам элемент регулярного выражения на самом деле \s*
, но вы должны экранировать символ \
вJava).