我正在尝试在Java中使用此RegEx: ,代码如下:
public class Intervals {
public static void main( String[] args ) {
try {
FileReader fr = new FileReader( new File( "ex11.intervals.txt"));
BufferedReader br = new BufferedReader( fr );
while( br.read() != -1 ){
String currentLine = new String( br.readLine() );
Pattern p = Pattern.compile( "<hr( +size *= *[0-9]+)? *>" );
Matcher m = p.matcher( currentLine );
while( m.find() ){
System.out.println( currentLine );
}
}
} catch( FileNotFoundException fne ){
fne.printStackTrace();
} catch( IOException e ){
e.printStackTrace();
}
}
}
但它不起作用,但如果我使用 egrep UNIX实用程序执行它,它可以正常工作。
ex11.intervals.txt 内容:
<hr>
<hr >
<hr size=15>
<hr size = 21 >
有人知道这件事发生了什么?
我试过了
Pattern p = Pattern.compile( "<hr>" )
但两者都不起作用。
有任何建议,有帮助吗?
提前致谢
答案 0 :(得分:7)
更改您的代码以读取文件,如下所示:
String currentLine = null;
while( (currentLine = br.readLine()) != null ){
}
执行read()
时,您始终会读取第一个字符,从而跳过HTML标记中的少于签名。