0

我有一个非常大的字符串。可以在这里看到:http: //pastebin.com/vqXJ3WV6

我想使用正则表达式 3.8 拆分此字符串 当我使用记事本搜索此字符串时,我找到了 3.8 的两个实例。因此,我希望返回的数组的长度为 3。

System.err.println(convertPdfToText(save).split("3.8").length);

但是,使用 convertPdfToText 调用它来获取此字符串的长度为 4?

在此处输入图像描述

我一点也不明白这一点。谁能告诉我发生了什么,因为这极大地改变了我的程序的行为。

提前致谢

4

1 回答 1

3

.字符是正则表达式中的特殊字符,字面意思是“任何字符”。因此,您基本上是在寻找3[anything]8,并且快速的正则表达式搜索显示确实有 3 个匹配项。两个是您实际查找的有效“3.8”字符串。您的意外匹配位于此字符串的末尾:

3.4 单元 3:西班牙语 46953 8

解决方案是简单地使用.文字,而不是使用反斜杠转义字符:

System.err.println(convertPdfToText(save).split("3\\.8").length);
于 2012-11-25T00:55:59.407 回答