首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >匹配Java中的阿拉伯标点符号

匹配Java中的阿拉伯标点符号
EN

Stack Overflow用户
提问于 2018-10-18 11:27:27
回答 2查看 461关注 0票数 0

我想在这段代码中编辑REGEX_PATTERN2,以便使用阿拉伯标点符号的matches()方法

代码语言:javascript
复制
 String REGEX_PATTERN = "[\\.|,|:|;|!|_|\\?]+";
        String s1 = "My life :is happy, stable";
        String[] result = s1.split(REGEX_PATTERN);
        for (String myString : result) {
            System.out.println(myString);   

}

         String REGEX_PATTERN2 = "[\\.|,|:|;|!|_|،|؛|؟\\?]+";
            String s2 = " حياتي ؛ سعيدة، مستقر";
            String[] result2 = s2.split(REGEX_PATTERN2);
            for (String myString : result2) {
                System.out.println(myString);   

    }

我想要的输出

我的生活

是幸福的

稳定

حياتي

سعيدة

مستقر

如何编辑此代码并使用matches()而不是split()方法来获得带有阿拉伯标点符号的相同输出

EN

回答 2

Stack Overflow用户

发布于 2018-10-18 11:45:38

[]表示正则表达式字符类,这意味着它只匹配单个字符。...为3个字符,因此不能在字符类中使用。

在字符类中,不需要使用|分隔字符,也不需要对.?进行转义。

您的意思可能是这样,这是一个备用字符序列的列表:

"(?:\\.|,|:|;|!|\\?|،|؛|؟|\\.\\.|\\.\\.\\.)+"

如果在以下情况下使用字符类,您可能会获得更好的性能:

"(?:\\.{1,3}|[,:;!?،؛؟])+"

当然,在+的末尾,在每次迭代中匹配1-3个周期是相当多余的,所以这样做:

"[.,:;!?،؛؟]+"

票数 0
EN

Stack Overflow用户

发布于 2018-10-18 13:46:34

这里有一种不同的方法,它使用Unicode属性而不是特定字符(如果您关心的不仅仅是另一个答案中提到的问号和逗号):

代码语言:javascript
复制
"(?=^[\\p{InArabic}.,:;!?]+$)^\\p{IsPunctuation}+$"

它匹配具有标点符号类别的整个字符串,这些字符也在阿拉伯语块中,或者是您在努力中列出的其他标点符号之一。

它将匹配像"؟،""؟،:"这样的字符串,但不匹配"؟،ؠ""؟،a"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52866576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档