Java中用java.util.regex分隔单词

时间:2011-11-14 23:51:15

标签: java regex

我有这样的文字:

  

C语言在应用程序运营中广泛使用的%y%   系统和嵌入式系统开发,其影响可见于   最现代的编程语言。 UNIX也很有影响力,   建立%y%概念和原则,现在是   计算。%P%

文字有一些不必要的指标:%y%和%p%

我使用正则表达式使用此正则表达式来分割单词:

Pattern p = Pattern.compile("[a-zA-Z]+");

我可以分割所有单词,但这个正则表达式带来“y”和“p”字母。我怎么能忽略这些指标呢?

3 个答案:

答案 0 :(得分:2)

在进行主要处理之前,您可以使用一些预处理来删除所有不必要的字符。这样的事情应该有效:

string.replaceAll("%y%|%p%","")

答案 1 :(得分:1)

或者您可以将指标视为单独的单词,并在以后对其进行排序:

Pattern p = Pattern.compile("[a-zA-Z]+|%[a-z]%");
顺便说一句,你不应该使用[a-zA-Z]作为自然语言文本 - 甚至英文文本也可能包含café之类的单词,像Björn等名字。为此,java.util.regex.Pattern支持预定义字符字母\p{L}以及\p{Ll}(仅限小写字母)和\p{Lu}(仅限大写字母)的字母可以很好地匹配这些字词。

答案 2 :(得分:0)

如果唯一的字符是“%y%”和“%p%”,那么你可以简单一点,只需在执行正则表达式之前删除它们。

e.g。

myString = myString.replaceAll("%y%|%p%", "");