在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