我试图在我的字符串中找到一个特定的模式,而我对正则表达式的了解非常基础。要查找小写字母,我可以使用[a-z0-9]+
但是如何查找前面和过程字符呢?
允许的例子:
(A)
,AB
,ABC
,[ABC]
,.AB'
,@ABCD#
。本质上只有大写字符(任何长度),或大写(任何长度)与前面或程序或两者(前面和后面),特殊字符。
不允许:
abABCaa
,ABCaa
,aaAB
,123ABC
,12ABGGabc
,aaBaa
等。本质上是大写字母(任意长度),带有前置或程序或两者,字母或数字。
如何编写过滤允许的示例或不允许的示例的正则表达式? 希望我很清楚
答案 0 :(得分:4)
这将匹配3组:匹配大写,前面的字符和后面的字符。如果不需要组,只需删除括号。
([^a-z0-9]*)([A-Z]+)([^a-z0-9]*)
有关匹配和分组的详细信息,请参阅正确的Javadoc。 另外,建议testing regex online
答案 1 :(得分:1)
如何简单:
\b[A-Z]+\b
这将匹配由字符
以外的其他字符包围的大写字母答案 2 :(得分:1)
这要容易得多。只需检查以下匹配项:
"^\\p{P}*[A-Z]+\\p{P}*$"
\p{P}
匹配任何标点字符。
^
方法,则可以删除 $
和.matches()
。
因此,这与AAB
,#A
,A.
匹配,但1A
,aAa
,aA
和Aa
失败。
答案 3 :(得分:-1)
不确定这可以用正则表达式完成。通过比较来尝试算法:
开始循环字符串的所有字符(alpha字符):
CurCharIsUpper =(curchar.uppercase == curchar.lower)? false:是的; 如果(PrevCharIsUpper == CurCharIsUpper)blahblah; PrevCharIsUpper = CurCharIsUpper;
结束循环