我有以下正则表达式,用于将短语与大写的所有字母匹配
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
我想要匹配。这类似于忽略任何不是字母的字符,但休息应该是大写的
假设任何表情符号中使用的字母都只是大写字母。
我应该对正则表达式进行哪些更改以匹配表情符号,例如具有大写字符的字符串?
答案 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}}。
+