有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java split()方法无法区分“”Windows上的“”和“”

例如:

"xxxxx-ex-xxxxx.ex-xxxx".split(".ex")

结果将是“xxxxx”、“-xxxxx”和“-xxxxx”,这意味着“-ex”已被标识为“.ex”

当然,“\.ex”在这种情况下效果很好。我只是想知道为什么会这样?似乎这只发生在Windows上


共 (1) 个答案

  1. # 1 楼答案

    当调用"xxxxx-ex-xxxxx.ex-xxxx".split(".ex")时,您正在调用java.lang.String.split()。此方法接受“.ex”作为正则表达式

    我们可以使用RegExr来了解regex,并了解为什么-ex部分也会被识别。 我已经在网站上输入了你的字符串和正则表达式:https://regexr.com/4rq3o

    从这个工具中,我们可以看到点.是特殊的,意味着匹配任何字符,所以键入“.ex”意味着找到一个模式,其中任何字符后跟ex

    为了将“.ex”视为文字字符串,我们需要转义点。正如您所发现的,\.ex实现了这个技巧,因为反斜杠是一个转义字符