我正在尝试找到用户将进入لاعبون的阿拉伯语单词的主干,程序将尝试从单词中删除ون,单词的剩余部分将是لاعب然后尝试找到主干لعب在我的词干列表中,我可以用正则表达式或任何建议来做到这一点。感谢
答案 0 :(得分:1)
如今,大多数正则表达式引擎(包括Java)都支持Unicode。对于您的特定情况,您需要以下内容:
String text = "لاعبون";
text.replaceAll("\\u0648\\u0646", "");
基本上,您需要做的就是用空字符串替换要删除的每个特定Unicode代码点。做完了。
答案 1 :(得分:0)
答案 2 :(得分:0)
这是完整的例子
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class regex {
public static void main(String args[]) {
Pattern p = Pattern.compile("(.*)" + "ون");
Matcher m = p.matcher("لاعبون");
Matcher m2 = p.matcher("يييي");
System.out.println(m.matches());
System.out.println(m.group(1));
System.out.println(m2.matches());
}
}
将打印
true
لاعب
false
答案 3 :(得分:0)
由于每个glyf保留了字符代码,因此与英语相比没有太大的区别。你应该写下模式以匹配3个字符根,然后编写语法将它们转换为另一个模式/模板。
答案 4 :(得分:-1)
您所描述的问题将包含大量变量。你知道所有的前缀,后缀,你能列出它们吗?
如果您可以执行上述两项操作,则会为您提供一个列表,然后您可以根据需要测试您的字词并删除字符。
查看类似问题的先前答案(How to ban words with diacritics using a blacklist array and regex?)
将您的角色转换为UTF-8中的角色表示(我相信这会为您省去一些麻烦。)
然后使用简单的正则表达式。
让我们说(因为我现在不能自己转换这些)ون= x021-x023
您的作品(转换为16位)推入正则表达式并通过此> S / ^ x021-x023 //克
会削减x021-x023。
将其恢复为正常的字符集。
你有简短的短语。