我有这样的文字:
C语言在应用程序运营中广泛使用的%y% 系统和嵌入式系统开发,其影响可见于 最现代的编程语言。 UNIX也很有影响力, 建立%y%概念和原则,现在是 计算。%P%
文字有一些不必要的指标:%y%和%p%
我使用正则表达式使用此正则表达式来分割单词:
Pattern p = Pattern.compile("[a-zA-Z]+");
我可以分割所有单词,但这个正则表达式带来“y”和“p”字母。我怎么能忽略这些指标呢?
答案 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%", "");