我试图在Scala/Spark中制作一个与语言无关的文本解析器。我使用regex从大量文本中删除标点符号。
list_of_strings.map(_.replaceAll("""[\p{Punct}]"""))然而,我发现一些标点符号在中文文本中没有被删除。到目前为止,我已经将[〝〞。,"]添加到这些字符的正则表达式中。请注意,其中许多标点符号与拉丁文标点符号相似,但并不完全相同。
在Java regex中是否有一个“规范”函数可以让我去掉其他语言中的标点符号?除了中文之外,我还关心阿拉伯语。
另外,我希望确保在一种语言中去掉标点符号并不是另一种语言中的关键语言组件。我既不熟悉汉语也不熟悉阿拉伯语,所以我想找一个母语为母语的人做的东西。
发布于 2018-09-11 13:11:25
您不需要将所有Unicode标点符号字符添加到字符类中。使用\p{Punct}或等效的(?U)嵌入标志选项使Pattern.UNICODE_CHARACTER_CLASS能够识别Unicode:
.replaceAll("""(?U)\p{Punct}+""", "")
^^^^ 见Scala演示。
删除连续标点符号字符后的+是块,而不是一个接一个。
https://stackoverflow.com/questions/52276692
复制相似问题