在Java中使用标点符号和空格等通过正则表达式拆分字符串

我有读取到Java应用程序中的文本文件,然后逐行计算其中的单词。现在,我用

String.split([\\p{Punct}\\s+])"

但是我知道我缺少文本文件中的某些单词。例如,单词“不能”应分为两个单词“可以”和“ t”。

逗号和其他标点符号应完全忽略,并视为空白。我一直在尝试了解如何形成更精确的正则表达式来执行此操作,但是在这方面我是新手,因此我需要一些帮助。

就我所描述的目的而言,什么是更好的正则表达式?

回答:

您的正则表达式有一个小错误。试试这个:

String[] Res = Text.split("[\\p{Punct}\\s]+");

[\\p{Punct}\\s]++字符类内部的表单移到外部。+否则,您也将在a上拆分,并且不要在一行中合并拆分的字符。

所以我得到了这段代码

String Text = "But I know. For example, the word \"can\'t\" should";

String[] Res = Text.split("[\\p{Punct}\\s]+");

System.out.println(Res.length);

for (String s:Res){

System.out.println(s);

}

这个结果

10

但是

知道

对于

例如

可以

牛逼

哪个应该满足您的要求。

作为替代,您可以使用

String[] Res = Text.split("\\P{L}+");

\\P{L} Means不是具有属性“ Letter”的unicode代码点

以上是 在Java中使用标点符号和空格等通过正则表达式拆分字符串 的全部内容, 来源链接: utcz.com/qa/417285.html

回到顶部