正则表达式匹配字符串中的大喊大叫的单词和表情符号

时间:2016-04-16 22:11:25

标签: java regex

我有以下正则表达式,用于将短语与大写的所有字母匹配

private static String ALL_CAPS_REGEXP = "\\b[A-Z\\s]+\\b";

但这与;D:P:O等字符串不匹配。

一些例子是:

  • ALL CAPS :DD REGEXP
  • ALL CAPS ('-:
  • ALL CAPS )-': :P
  • I ALL CAPS REGEXP

我想要匹配。这类似于忽略任何不是字母的字符,但休息应该是大写的

假设任何表情符号中使用的字母都只是大写字母。

我应该对正则表达式进行哪些更改以匹配表情符号,例如具有大写字符的字符串?

1 个答案:

答案 0 :(得分:1)

对于正则表达式“将表情符号与具有大写字符的字符串匹配”,我们需要声明“表情符号如表情符号”的含义。

由于表情符号使用(组合)各种标点符号,并且您使用大写字母限制表情符号,您可以声明标点符号和可选大写字母的任何组合都是表情符号。

在这种情况下,只需列出字符类中的标点符号。

"\\b[A-Z\\s!@#$%^&*()\\_-+={}[\\]:;\"'<>?,./]+\\b"

或者使用POSIX character classes更具描述性:

"\\b[\\p{Upper}\\p{Space}\\p{Punct}]+\\b"

可能以(?U)为前缀,以获得完整的unicode /国际支持。

您可能还希望过滤掉单字符匹配,否则"I rock."之类的输入将返回I.,因此请使用{2,}代替{{} 1}}。

+