正则表达式用于检测前面和后面的小写字母和数字

时间:2012-09-19 12:08:30

标签: java regex

我试图在我的字符串中找到一个特定的模式,而我对正则表达式的了解非常基础。要查找小写字母,我可以使用[a-z0-9]+但是如何查找前面和过程字符呢?

允许的例子: (A)ABABC[ABC].AB'@ABCD#。本质上只有大写字符(任何长度),或大写(任何长度)与前面或程序或两者(前面和后面),特殊字符。
不允许: abABCaaABCaaaaAB123ABC12ABGGabcaaBaa等。本质上是大写字母(任意长度),带有前置或程序或两者,字母或数字。

如何编写过滤允许的示例或不允许的示例的正则表达式? 希望我很清楚

4 个答案:

答案 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#AA.匹配,但1AaAaaAAa失败。

答案 3 :(得分:-1)

不确定这可以用正则表达式完成。通过比较来尝试算法:

  • 开始循环字符串的所有字符(alpha字符):

    CurCharIsUpper =(curchar.uppercase == curchar.lower)? false:是的; 如果(PrevCharIsUpper == CurCharIsUpper)blahblah; PrevCharIsUpper = CurCharIsUpper;

  • 结束循环