当前位置: 首页 > 面试题库 >

了解Java中的正则表达式:split(“ \ t”)vs split(“ \\\ t”)-它们什么时候都可以工作,什么时候应该使用

淳于泓
2023-03-14
问题内容

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

但是,当我在寻找其他东西的正则表达式模式时,我碰巧偶然发现了这个事实。您会看到,有错误的代码split("\t")在我的情况下一直运行良好,现在,如果为声明用于匹配制表符的正则表达式的错误方法而使它起作用,我就感到困惑。因此,这个问题是为了真正理解Java中的正则表达式是如何处理的,而不是仅仅将代码复制到Eclipse中,而不是真正在意它为什么起作用…

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

提前致谢,


问题答案:

使用时"\t",转义序列
\t由Java替换为字符U +
0009。当使用"\\t",转义序列\\\\t通过Java的替换\,从而导致\t,然后由解释的正则表达式语法分析程序作为字符U
+ 0009。


因此,这两种表示法都将得到正确的解释。这只是将其替换为相应字符的问题。



 类似资料:
  • 问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮​​助。但是,在发送流数据时,等待A

  • 问题内容: 在该类中,有两个字符串,和。 有什么不同?我什么时候应该使用另一个? 问题答案: 如果你的意思是和则: 用于在文件路径列表中分隔各个文件路径。考虑在上的环境变量。您使用a分隔文件路径,因此在上将是;。 是或用于拆分到特定文件的路径。例如在上,或

  • 问题内容: 我在某些插入T-SQL查询中看到前缀N。在表中插入值之前,许多人已经使用过。 我进行了搜索,但是在将任何字符串插入表之前,我无法理解包括的目的是什么。 此“ N”前缀起什么作用?何时使用? 问题答案: 它声明字符串为数据类型,而不是 您可能已经看到了Transact- SQL代码,该代码使用N前缀传递字符串。这表示后面的字符串是Unicode(N实际上代表本国语言字符集)。这意味着您要

  • 邮件列表和网上讨论中似乎经常出现的一个话题是攻读计算机科学学位的优点(或不足)。对于否定的一方来说,一个似乎一再出现的论点是,他们已经编码了一些年了,他们从来没有使用过递归。 所以问题是: 什么是递归? 何时使用递归? 为什么人们不使用递归?

  • 问题内容: 在集成我以前从未使用过的Django应用程序时,我发现了用于定义类中函数的两种不同方式。作者似乎非常有意地使用了它们。第一个是我自己经常使用的: 另一个是我不使用的,主要是因为我不知道何时使用它,以及什么用途: 在Python文档中,装饰器的解释如下: 类方法将类作为隐式第一个参数接收,就像实例方法接收实例一样。 所以我想指的是自己(而不是实例)。我不完全理解为什么会这样,因为我总是可

  • 问题内容: 在以下代码段中: 是什么在方法代表什么呢?我什么时候应该使用它? 问题答案: 介绍 该ServletContext#getRealPath()被intented到Web内容的路径(在服务器的磁盘文件系统上展开的WAR文件夹结构的路径)转换为绝对磁盘文件系统路径。 该代表Web内容根。即,它代表以下项目结构中的文件夹: 因此,将传递给将返回你/web项目的扩展WAR文件的文件夹的绝对磁盘