java扫描程序忽略^Caret
我试图通过使用方法java扫描程序忽略^Caret,java,java.util.scanner,delimiter,Java,Java.util.scanner,Delimiter,我试图通过使用方法useDelimiter(&|=| ~~ | ^),将java scanner与以下一组分隔符一起使用(&|=| ~| ^) 除了被忽略的^之外,所有分隔符都正常工作:为什么 我在扫描仪文档中看不出原因。您需要转义^,如下所示:使用分隔符(&|=| ~| \^)。这是因为^是正则表达式中的元字符,usedimiter()的String参数最终被编译成正则表达式 等价地,您可以这样编写分隔符,在这种情况下,无需转义^:使用分隔符(“[&=~^]”)^是正则表达式中的保留符号,因此
useDelimiter(&|=| ~~ | ^),将java scanner与以下一组分隔符一起使用(&|=| ~| ^)代码>
除了被忽略的^
之外,所有分隔符都正常工作:为什么
我在扫描仪文档中看不出原因。您需要转义^
,如下所示:使用分隔符(&|=| ~| \^)
。这是因为^
是正则表达式中的元字符,usedimiter()
的String
参数最终被编译成正则表达式
等价地,您可以这样编写分隔符,在这种情况下,无需转义^
:使用分隔符(“[&=~^]”)
^
是正则表达式中的保留符号,因此您需要转义它:\^
,而不是使用替换,您可以使用:
因为^
在字符类中不是特殊的(除了开始时),所以它不需要转义。我认为“蠕动”被称为“波浪线”(~)。。。只是我不认为我能正确拼写tilde,虽然我已经尝试过这种方法,但它不起作用。。。但是我认为这是因为^后面紧跟着=。我相信如果两个测厚仪互相跟踪,那么使用一个测厚仪列表是不起作用的。。。或者可能两个相邻的delimeter在字符类中的标记中得到null(在正则表达式中被[]
包围),如果在开始处找到^
则表示否定。例如,此[^abc]
表示:匹配除a、b或c以外的任何内容。如果插入符号出现在字符类中的任何其他位置,它将被解释为普通字符
"[&=~^]"