我想删除文本中重复的阿拉伯字母。我如何在 Java 中使用正则表达式来做到这一点?我尝试了不同的正则表达式,但它从我的文本中删除了所有阿拉伯字母!请帮助。 顺便说一句,我将正则表达式与 StringToWordVector 过滤器一起使用,就像 here
中发生的那样这就是我的应用方式:
filter.setStopwordsHandler(new RegExStopwords("([^\\u1F600-\\u1F6FF\\s].*|[A-Za-z0-9].*|[٠-٩].*|[\\u0617-\\u061A\\u064B-\\u0652].*|[ؐ-ًؚٟ].*|[/(آ|إ|أ)/g, 'ا']|[/(ة)/g, 'ه']|[/(ئ|ؤ)/g, 'ء']|[/(ى)/g, 'ي']|[/([^\\u0621-\\u063A\\u0641-\\u064A\\u0660-\\u0669])/g, '']"));
所以我尝试了 .replaceAll() 函数提到的答案,但它对我不起作用,或者实际上我不知道如何正确地将它们放入我的代码中。
我更愿意使用循环
String str = "hello"
char prevChar = ' ';
String result = "";
for(char ch : str.toCharArray()){
if(ch != prevChar)
result += ""+ch //concat casts to string for us
prevChar = ch
}
会返回
helo
(删除重复的l
)
编辑:
如果您想使用过滤器,正确的正则表达式应该是
/(.)(?<=\1{2,})/ig
(.)
抓取任意角色(?<=\1{2,})
分解如下:\1
捕获第一组中指定的字符 ((.)
){2,}
捕获任何重复两次的组?<=
是向后看,基本上是说我们想检查下一个词 (\1
) 是否存在,但我们不想捕获它。所以我们只剩下被捕获的
{2,}
,这就是你想要的
如需更多帮助,请尝试这些 Stack Overflow 链接
祝你好运!