理解Java中的正则表达式:split(“\ t”)vs split(“\\ t”) – 它们何时都有效,何时应该使用它们

我最近发现我在代码中没有正确使用正则表达式。 给str.split("\t")表符分隔字符串str的示例,我一直在使用str.split("\t") 。 现在我意识到这是错误的并且正确匹配标签我应该使用str.split("\\t")

然而,我碰巧偶然发现了这个事实,因为我正在为其他东西寻找正则表达式。 你看,错误的代码split("\t")在我的情况下工作得很好,现在我很困惑,为什么它可以正常工作,如果它是一个错误的方式来声明匹配tab字符的正则表达式。 因此,问题是,为了实际理解如何在Java中处理正则表达式,而不是仅仅将代码复制到Eclipse中而不是真正关心其工作原理……

以类似的方式,我发现了一段不仅以制表符分隔而且以逗号分隔的文本。 更清楚地说,我正在解析的制表符分隔列表有时包括“复合”项,它们看起来像: item1,item2,item3 ,我想将它们解析为单独的元素,为了简单起见。 在这种情况下,适当的正则表达式应该是: line.split("[\\t,]") ,或者我在这里也错了?

提前致谢,

使用"\t" , 转义序列 \t被Java替换为字符U + 0009。 当使用"\\t""\\t"的转义序列\\被Java替换为\ ,从而产生\t ,然后由正则表达式解析器将其解释为字符U + 0009。

因此两种符号都将被正确解释。 这只是用相应的字符替换它的问题。

\被认为是java中的转义字符,所以要获得正确的正则表达式,你需要转义\ with \和t来指示制表符。

本教程将提供更多帮助