Я хотел бы извлечь некоторый текст из html-файла, используя Regex. Я изучаю регулярные выражения, и мне все еще трудно понять все это. У меня есть код, который извлекает весь текст, включенный между <body>
и </body>
, вот он:
public class Harn2 {
public static void main(String[] args) throws IOException{
String toMatch=readFile();
//Pattern pattern=Pattern.compile(".*?<body.*?>(.*?)</body>.*?"); this one works fine
Pattern pattern=Pattern.compile(".*?<table class=\"claroTable\".*?>(.*?)</table>.*?"); //I want this one to work
Matcher matcher=pattern.matcher(toMatch);
if(matcher.matches()) {
System.out.println(matcher.group(1));
}
}
private static String readFile() {
try{
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream("user.html");
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine = null;
//Read File Line By Line
while (br.readLine() != null) {
// Print the content on the console
//System.out.println (strLine);
strLine+=br.readLine();
}
//Close the input stream
in.close();
return strLine;
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
return "";
}
}
}
Ну, все работает нормально, но я хотел бы извлечь текст между тегами:
<table class="claroTable">
и </table>
Поэтому я заменяю строку регулярных выражений на ".*?<table class=\"claroTable\".*?>(.*?)</table>.*?"
Я также пытался
".*?<table class=\"claroTable\">(.*?)</table>.*?"
но это не работает, и я не понимаю, почему. В html-файле есть только одна таблица, но в коде javascript есть «таблица»: «... dataTables.js ...» может ли это быть причиной ошибки?
Заранее спасибо за помощь,
РЕДАКТИРОВАТЬ: HTML-текст для извлечения что-то вроде:
<body>
.....
<table class="claroTable">
<td><th>some data and manya many tags </td>
.....
</table>
Я хотел бы извлечь что-нибудь между <table class="claroTable">
и </table>