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

标签 java regex

我正在尝试在 Java 中使用此正则表达式: 在以下代码中:

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>" )

但两者都不起作用。

有什么建议,帮忙吗?

提前致谢

最佳答案

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

String currentLine = null;

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

}

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

关于Java RegEx 使用小于号 (<) 时不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13441860/

相关文章:

java - 仅对表中选定的行启用编辑

java - 将 main 方法中的变量与另一个 Java 方法连接

Java 正则表达式模仿数字的 if-else

regex - Sublime Text 中 >= 和 <= 运算符的语法高亮显示

c# - 价格正则表达式

python - 正则表达式 - 选择单引号之间的表达式

java - 将单独的 java 应用程序集成为单个应用程序的模块

java - Web服务中的Spring Security CAS实现

java - 替换字符串中的模式匹配

java - 需要 SQLite 仅用新信息替换行