我有一些文档通过 OCR 转换从 PDF 到 HTML。正因为如此,他们最终在转换器搞砸的地方有很多随机的 unicode 标点符号(即省略号等)。他们也正确地有一堆非英语,但仍然是字母字符,如é和俄语字符等......
有没有办法制作一个匹配任何 unicode 字母字符(来自任何语言的字母)的正则表达式?还是只匹配非字母字符?任何一个都会非常有帮助和真棒。我正在使用 Perl,如果这改变了任何东西。谢谢!
我有一些文档通过 OCR 转换从 PDF 到 HTML。正因为如此,他们最终在转换器搞砸的地方有很多随机的 unicode 标点符号(即省略号等)。他们也正确地有一堆非英语,但仍然是字母字符,如é和俄语字符等......
有没有办法制作一个匹配任何 unicode 字母字符(来自任何语言的字母)的正则表达式?还是只匹配非字母字符?任何一个都会非常有帮助和真棒。我正在使用 Perl,如果这改变了任何东西。谢谢!
查看 Unicode 字符属性:http ://www.regular-expressions.info/unicode.html#prop 。我想你正在寻找的可能是
\p{L}
这将匹配任何字母或表意文字。您可能还想包括带有标记的字母,所以您可以这样做
\p{L}\p{M}*
无论如何,所有不同类型的字符属性都在第一个链接中详细说明。
编辑:您可能还想查看这个 Stack Overflow 答案,讨论是否 \w 匹配 unicode 字符。他们建议您也可以使用 \p{Word} 或 \p{Alnum}: \w 是否匹配 Unicode 标准中定义的所有字母数字字符?
根据您使用的语言,正则表达式引擎可能支持也可能不支持 Unicode。如果是,它可能知道也可能不知道\p{}
属性令牌。如果是这样,您的答案在 Jan Goyvaerts 的 regex tutorial中的Unicode Characters and Properties中。
如果支持,您可以使用\p{Latin}
来检测(当然不是)来自使用任何 Unicode 拉丁语块的语言的所有内容。