2

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

允许的例子: (A), AB, ABC, [ABC], .AB', @ABCD#. 本质上只有大写字符(任何长度),或带有前面或前面或两者(前面和后面)的大写字母(任何长度),特殊字符。
不允许: abABCaa, ABCaa, aaAB, 123ABC, 12ABGGabc,aaBaa等。本质上是大写字母(任何长度),前面或前面或两者,字母或数字。

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

4

4 回答 4

4

这将匹配 3 个组:匹配的大写字母、前面的字符和后面的字符。如果不需要组,只需删除括号。

([^a-z0-9]*)([A-Z]+)([^a-z0-9]*)

有关匹配和分组的更多信息,请参阅正确的Javadoc。另外,关于在线测试正则表达式的建议

于 2012-09-19T12:17:39.443 回答
1

怎么样简单:

\b[A-Z]+\b

这将匹配由其他字符而不是单词字符包围的大写字母

于 2012-09-19T12:44:31.250 回答
1

这要容易得多。只需检查匹配项:

"^\\p{P}*[A-Z]+\\p{P}*$"

\p{P}匹配任何标点符号。

^$如果您使用该.matches()方法,则可以删除。

所以这匹配AAB,和#A,和,和.A.1AaAaaAAa

于 2012-09-19T13:01:55.360 回答
-1

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

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

    CurCharIsUpper = (curchar.uppercase == curchar.lower) ?假:真;if (PrevCharIsUpper == CurCharIsUpper) blahblah; PrevCharIsUpper = CurCharIsUpper;

  • 结束循环

于 2012-09-19T12:15:34.073 回答