我有一些文档,它们已经从PDF转换成HTML,并使用OCR技术进行了转换。因此,它们会出现许多随机的Unicode标点符号,这是转换器混乱导致的(例如省略号等)。它们还正确地包含了大量的非英语但仍为字母字符,例如é和俄文字母等。
是否有办法创建一个正则表达式,可以匹配任何语言字母表中的Unicode字母字符?或者只匹配非字母字符的正则表达式?两种情况都会非常有用。如果使用Perl,则需要进行更改。谢谢!
我有一些文档,它们已经从PDF转换成HTML,并使用OCR技术进行了转换。因此,它们会出现许多随机的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标准中定义的所有字母数字字符?
\p{}
属性标记。如果它支持,可以使用 \p{Latin}
来检测所有属于(当然也包括不属于)任何 Unicode 拉丁字符块的语言的内容。有关更多信息,请参见 Jan Goyvaerts 的正则表达式教程中的 Unicode Characters and Properties。
\P
来匹配没有特定属性的字符(因此,\P{L}
匹配任何非字母字符)。 - John Flatness