使用小于(<)符号时,Java RegEx不匹配

时间:2012-11-18 16:09:50

标签: java regex

我正在尝试在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>" )

但两者都不起作用。

有任何建议,有帮助吗?

提前致谢

1 个答案:

答案 0 :(得分:7)

更改您的代码以读取文件,如下所示:

String currentLine = null;

while( (currentLine = br.readLine()) != null ){

}

执行read()时,您始终会读取第一个字符,从而跳过HTML标记中的少于签名。