在Java字符串中检测日语字符

时间:2014-09-27 14:04:51

标签: java regex string

我试图检测java字符串是否包含日文字符。因为如果字符形成一个语法正确的句子对我来说无关紧要,我认为我使用正则表达式来匹配字符串中的任何日语字符,如下所示:

package de.cg.javatest;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class JavaTest {

    public static void main(String[] args) {
        String aString = "なにげない日々。";
        Pattern pat = Pattern.compile("[\\p{InHiragana}]");
        Matcher m = pat.matcher(aString);
        System.out.println(m.matches()); // false
    }
}

但是,print语句始终显示false。我试过改变模式

[\\p{IsHiragana}]
[\\p{InHiragana}]+

我也手动输入了代码点。有什么我想念的,还是我必须采取另一种方法?

1 个答案:

答案 0 :(得分:4)

仅当模式匹配整个字符串时,

Matcher.matches才返回true。 As Anonymous commented, not all character are Hiragana characters.

通过更改以下模式,您可以检查是否有平假名。

Pattern pat = Pattern.compile(".*\\p{InHiragana}.*");

使用Matcher.find,您无需修改​​模式。

Pattern pat = Pattern.compile("\\p{InHiragana}");  // [..] is not needed.
Matcher m = pat.matcher(aString);
System.out.println(m.find()); // true