我最近发现我在代码中没有正确使用正则表达式。给定制表符分隔字符串str
的示例,我一直在使用str.split("\t")
。现在我意识到这是错误的并且正确匹配标签我应该使用str.split("\\t")
。
split("\t")
在我的情况下工作得很好,现在我很困惑,为什么它可以工作,如果它是一个错误的方式来声明匹配制表符的正则表达式。因此,问题是,为了真正理解如何在Java中处理正则表达式,而不是仅仅将代码复制到Eclipse中而不是真正关心其工作原理......
以类似的方式,我发现了一段不仅以制表符分隔而且以逗号分隔的文本。更清楚地说,我正在解析的制表符分隔列表有时包括“复合”项,它们看起来像:item1,item2,item3
,我想将它们解析为单独的元素,为了简单起见。在这种情况下,适当的正则表达式应该是:line.split("[\\t,]")
,或者我也错在这里?
提前致谢,
答案 0 :(得分:41)
使用"\t"
时,escape sequence \t
将替换为字符为U + 0009的Java。使用"\\t"
时,\\
中的转义序列\\t
将被\
替换为Java,从而导致\t
由regular expression解释}解析器为字符U + 0009。
因此两种符号都将被正确解释。这只是用相应的角色替换的问题。
答案 1 :(得分:0)
\
被认为是java中的转义字符,因此要获得正确的正则表达式,您需要使用\
和t来转义\
以指示制表符。
This教程将有助于更多