我试图检测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}]+
我也手动输入了代码点。有什么我想念的,还是我必须采取另一种方法?
答案 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