如何使用阿拉伯文本的正则表达式

时间:2016-12-08 16:37:17

标签: java regex nlp

我正在尝试找到用户将进入لاعبون的阿拉伯语单词的主干,程序将尝试从单词中删除ون,单词的剩余部分将是لاعب然后尝试找到主干لعب在我的词干列表中,我可以用正则表达式或任何建议来做到这一点。感谢

5 个答案:

答案 0 :(得分:1)

如今,大多数正则表达式引擎(包括Java)都支持Unicode。对于您的特定情况,您需要以下内容:

String text = "لاعبون";
text.replaceAll("\\u0648\\u0646", "");

基本上,您需要做的就是用空字符串替换要删除的每个特定Unicode代码点。做完了。

答案 1 :(得分:0)

你甚至需要使用编码的“代码点”吗? this works

正则表达式:ون(.*)

替换:$1

答案 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。

将其恢复为正常的字符集。

你有简短的短语。