有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将正则表达式与阿拉伯语文本一起使用

我正在试图找到阿拉伯语单词的主茎,用户将输入لاعبو,程序将尝试从单词中删除ون,单词的剩余部分将是لاعب,然后尝试在我的词干列表中找到主茎لعب,我可以用regex或任何建议这样做吗。谢谢


共 (4) 个答案

  1. # 1 楼答案

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

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

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

  2. # 2 楼答案

    由于每个glyf都保留字符代码,因此与英语相比没有太大差异。您应该只写下匹配3个字符根的模式,然后编写语法将它们转换为另一个模式/模板

  3. # 3 楼答案

    您所描述的问题将有一大组变量。你知道所有的前缀、后缀吗?你能列出它们吗

    如果您可以同时执行上述两项操作,那么将提供一个列表,您可以根据该列表测试您的单词,并根据需要删除字符

    参见前面对类似问题的回答(How to ban words with diacritics using a blacklist array and regex?

    将您的字符转换为UTF-8中的字符表示形式(我相信这将为您节省一些麻烦。)

    然后使用简单的正则表达式

    比如说(因为我现在不能自己转换这些)ون=x021-x023

    您的作品(转换为16位)被推入regex并通过此>;s/^x021-x023//g

    将从您的文字中删除x021-x023

    将其转换回您的正常角色集

    你有你的短词

  4. # 4 楼答案

    这里是完整的例子

    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