首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Scala/Java中过滤中文标点符号?

问如何在Scala/Java中过滤中文标点符号?
EN

Stack Overflow用户
提问于 2018-09-11 13:07:59
回答 1查看 460关注 0票数 2

我试图在Scala/Spark中制作一个与语言无关的文本解析器。我使用regex从大量文本中删除标点符号。

代码语言:javascript
复制
list_of_strings.map(_.replaceAll("""[\p{Punct}]"""))

然而,我发现一些标点符号在中文文本中没有被删除。到目前为止,我已经将[〝〞。,"]添加到这些字符的正则表达式中。请注意,其中许多标点符号与拉丁文标点符号相似,但并不完全相同。

在Java regex中是否有一个“规范”函数可以让我去掉其他语言中的标点符号?除了中文之外,我还关心阿拉伯语。

另外,我希望确保在一种语言中去掉标点符号并不是另一种语言中的关键语言组件。我既不熟悉汉语也不熟悉阿拉伯语,所以我想找一个母语为母语的人做的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-11 13:11:25

您不需要将所有Unicode标点符号字符添加到字符类中。使用\p{Punct}或等效的(?U)嵌入标志选项使Pattern.UNICODE_CHARACTER_CLASS能够识别Unicode:

代码语言:javascript
复制
.replaceAll("""(?U)\p{Punct}+""", "")
               ^^^^ 

见Scala演示。

删除连续标点符号字符后的+是块,而不是一个接一个。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52276692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档