我很难在Java中使用正则表达式来引导/跟踪$的值(1.620)。
从这个代码:
System.out.println( "$40".matches("\\b\\Q$40\\E\\b") );
System.out.println( "$40".matches(".*\\Q$40\\E.*") );
System.out.println( "$40".matches("\\Q$40\\E") );
System.out.println( " ------ " );
System.out.println( "40$".matches("\\b\\Q40$\\E\\b") );
System.out.println( "40$".matches(".*\\Q40$\\E.*") );
System.out.println( "40$".matches("\\Q40$\\E") );
System.out.println( " ------ " );
System.out.println( "4$0".matches("\\b\\Q4$0\\E\\b") );
System.out.println( "40".matches("\\b\\Q40\\E\\b") );
我得到这些结果:
false
true
true
------
false
true
true
------
true
true
前两个街区的前导错误似乎是问题所在。也就是说,在\b(字边界)标记的上下文中,前导/尾随的$(美元符号)没有正确拾取。
块中的实际结果表明它不是所引用的美元符号本身,因为用a.*替换\b或全部删除将得到所需的结果。
最后两个“真”的结果表明,该问题既不是内部引用的$也不是在带引号的表达式\q中匹配单词边界(\b)。“E”。
这是爪哇虫还是我漏掉了什么?