了解 Java 中的正则表达式:split(“\t”) vs split(“\\t”) - 它们何时工作,何时应使用它们

2022-09-01 08:53:43

我最近发现我没有在我的代码中正确使用正则表达式。给定一个制表符分隔字符串的例子,我一直在使用。现在我意识到这是错误的,为了正确匹配选项卡,我应该使用。strstr.split("\t")str.split("\\t")

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

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

提前致谢,


答案 1

使用 时,转义序列被 Java 替换为字符 U+0009。当使用 时,中的转义序列被 Java 替换为 ,导致正则表达式解析器将其解释为字符 U+0009。"\t"\t"\\t"\\\\t\\t

因此,这两种符号都将得到正确的解释。当它被替换为相应的字符时,这只是问题。


答案 2

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

本教程将帮助更多