Java正则表达式 - 以大写字符开头的单词 - 不仅是拉丁语

时间:2015-04-03 21:00:45

标签: java regex

我尝试在文本中找到单词,以大写字母开头。但我不仅需要解析拉丁字母。  部分代码:

String pattern = "[^[\\p{Upper}\\p{Lu}]\\w]";
Pattern r = Pattern.compile(pattern);

StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
    word.set(itr.nextToken());
    Boolean m = word.toString().matches(pattern);

    if(m)
    {
        uid.set(word);
        context.write(uid, one);
    }
}

1 个答案:

答案 0 :(得分:1)

可以在

中找到以Java中的大写字母开头的单词
String pattern ="\\b\\p{Lu}\\p{L}*\\b";
  • \b - 字边界
  • \p{Lu} - 大写Unicode字母
  • \p{L}* - 任何Unicode字母,0或更多次重复
  • \b - 字边界

示例代码:

String str = "\u042F \u0425\u043E\u0436\u0443 \u043F\u043E \u0432\u043E\u0434\u0435.";
String rx = "\\b\\p{Lu}\\p{L}*\\b";
Pattern ptrn = Pattern.compile(rx);
Matcher m = ptrn.matcher(str);
while (m.find()) {
    System.out.println(m.group(0));
}