我有一些文档经过OCR从PDF转换为HTML。因此,他们最终有很多随机的unicode标点,转换器搞砸了(即elipses等)。他们也正确地拥有一堆非英语,但仍然是字母字符,如é,俄语字符等......
有没有办法让Regex匹配任何unicode字母字符(来自任何语言的字母)?或者只匹配非字母字符的那个?任何一个都会非常有用而且非常棒。我正在使用Perl,如果这改变了什么。谢谢!
答案 0 :(得分:27)
查看Unicode字符属性:http://www.regular-expressions.info/unicode.html#prop。我认为您正在寻找的可能是
\p{L}
将匹配任何字母或表意符号。您可能还希望在其上添加带标记的字母,这样就可以了
\p{L}\p{M}*
在任何情况下,第一个链接中都会详细说明所有不同类型的字符属性。
编辑:您可能还想查看此Stack Overflow答案,讨论\ w是否与unicode字符匹配。他们建议您也可以使用\ p {Word}或\ p {Alnum}:Does \w match all alphanumeric characters defined in the Unicode standard?
答案 1 :(得分:2)
根据您使用的语言,正则表达式引擎可能具有或不具有Unicode识别功能。如果是,则可能知道或不知道\p{}
属性令牌。如果有,您的答案就在Unicode Characters and Properties in Jan Goyvaerts' regex tutorial。
如果支持,您可以使用\p{Latin}
来检测使用任何Unicode拉丁语块的语言(或者当然不是)。