Я новичок в Java и пытаюсь сопоставить некоторые данные в теге TD и скобках с символом процента, но на всю жизнь не могу заставить его работать.
Я уверенэто очень просто, и я просто хочу извлечь числа перед символом% здесь:
<td>0 items (0%)</td>
Я попробовал довольно много предложений, но ни одно из них не работает.
linecache = readercache.readLine();
System.out.println(linecache);
Pattern patterncf1 = Pattern.compile("\\((.*?)\\)");
tried
Pattern patterncf1 = Pattern.compile("<td>\\d+ \\w+ \\((\\d+)?%\\)</td>");
tried
Pattern patterncf1 = Pattern.compile("<td>\\((\\d+)?%\\)</td>");
tried
Pattern patterncf1 = Pattern.compile("\\((\\d+)?%\\)");
но всегда получаю
<td>0 items (0%)</td>
Исключение в потоке "Thread-0" java.lang.IllegalStateException: Совпадение не найдено
Я также попробовал приведенное ниже предложение, но все равно выдает ошибку, и я быпредположим, что в данном случае это правильная группа.
linecache = readercache.readLine();
System.out.println(linecache);
String pattern = "\\d+(?=%)";
Pattern patterncf1 = Pattern.compile(pattern)
Matcher matchercf1 = patterncf1.matcher(linecache);
String passedvalue = matchercf1.group(1);
System.out.println(passedvalue);
Эта часть в другом разделе кода работает нормально.
Pattern patternmb1 = Pattern.compile("<td>(.+?) GB</td>");
Matcher matchermb1 = patternmb1.matcher(line);
if (matchermb1.find()) {
String passedvalue = matchermb1.group(1);
String[] tmpStr = passedvalue.split("\\.") ;
String withoutDecStr = tmpStr[0];
Float passedvalue2 = Float.valueOf(withoutDecStr);
System.out.println("MIU: " + passedvalue2);
JVMinusearray.add(passedvalue2);
Буду признателен, если кто-то может дать какой-то совет, пожалуйста..
Спасибо