Java 编码问题regex

Java 编码问题regex,java,regex,encoding,Java,Regex,Encoding,我有以下正则表达式: ^[0-9a-z]+\.[ ]+(table of )?contents 其目的是匹配字符串,例如: “b.目录” 我使用PDFBox解析pdf文档,并逐行查找上述字符串。有趣的是,当doc发现一个字符串正好是“b.目录”时,该字符串与正则表达式不匹配 现在,我通过在在线regex测试仪上手动键入完全相同的字符串进行测试,得到了一个匹配项: 当我尝试复制粘贴与我键入的字符串完全相同的解析文本时,我没有得到匹配: 仅供参考,这些是单空格,没有标签。进一步检查并比较两个字

我有以下正则表达式:

^[0-9a-z]+\.[ ]+(table of )?contents
其目的是匹配字符串,例如:
“b.目录”

我使用PDFBox解析pdf文档,并逐行查找上述字符串。有趣的是,当doc发现一个字符串正好是“b.目录”时,该字符串与正则表达式不匹配

现在,我通过在在线regex测试仪上手动键入完全相同的字符串进行测试,得到了一个匹配项:

当我尝试复制粘贴与我键入的字符串完全相同的解析文本时,我没有得到匹配:

仅供参考,这些是单空格,没有标签。进一步检查并比较两个字符串后,解析器中的字符串似乎有一些奇怪的字符被表示为一个空白,如下所示:

b.† table†of†contents
但在记事本上,它看起来就像:

b.† table†of†contents
我不得不猜测这是一个编码问题或类似的问题,但如果我试图编写一个正则表达式来解释这个奇怪的字符,仍然没有匹配:

这是我尝试过的正则表达式:

^[0-9a-z]+\.[ †]+(table[ †]+of[ †]+)?contents
那么,有没有办法解释这个um编码,以便正则表达式能够识别它? 如果有人感兴趣,我将使用String'matches'方法将字符串与代码中的正则表达式进行匹配

更新:

有关正则表达式和字符串的链接,请参见下面的注释。

如果您复制要应用正则表达式的粘贴行,并打印其中包含的字符,如

System.out.println(Arrays.toString("b.  table of contents".chars().toArray()));
结果,您将看到:

[98, 46, 160, 32, 116, 97, 98, 108, 101, 32, 111, 102, 32, 99, 111, 110, 116, 101, 110, 116, 115]
//       ^^^ 
160
的索引与索引为32的简单空格不匹配,这会导致正则表达式失败

要解决此问题,请将
符号替换为空白
,如
^[0-9a-z]+\.[]+(表[]+,共[]+)?内容


或者,要了解更通用的解决方案,请访问

,您可以在此处查看正则表达式和字符串: