有没有办法匹配任何Unicode非字母字符?

Eli*_*Eli 11 regex unicode perl character-properties

我有一些文件经过OCR从PDF转换为HTML.因此,他们最终有很多随机的unicode标点,转换器搞砸了(即elipses等).他们也正确地拥有一堆非英语,但仍然是字母字符,如é和俄语字符等...

有没有办法制作一个匹配任何unicode字母字符(来自任何语言的字母)的正则表达式?或者只匹配非字母字符的那个?任何一个都会非常有用而且非常棒.我正在使用Perl,如果这改变了什么.谢谢!

mpd*_*rty 29

查看Unicode字符属性:http://www.regular-expressions.info/unicode.html#prop.我想你正在寻找的可能是

\p{L}
Run Code Online (Sandbox Code Playgroud)

这将匹配任何字母或表意符号.您可能还希望在其上添加带有标记的字母,这样您就可以做到

\p{L}\p{M}*
Run Code Online (Sandbox Code Playgroud)

在任何情况下,所有不同类型的字符属性都在第一个链接中详细说明.

编辑:您可能还想查看此Stack Overflow答案,讨论\ w是否匹配unicode字符.他们建议您也可以使用\ p {Word}或\ p {Alnum}: 是否匹配Unicode标准中定义的所有字母数字字符?

  • 以同样的方式,您可以使用`\ P`来匹配字符*而不是具有特定属性(因此`\ P {L}`匹配任何非字母字符). (2认同)