仅大写字符的正则表达式

时间:2018-10-27 10:48:54

标签: regex

我只需要一个正则表达式,仅从数据流中选择大写字符,而没有任何前或后的小写字符,数字,符号。

有效:

  • ABCD

无效:

  • abcABCD
  • 123ABCD
  • $ ABCD
  • ABCDab12 $,

摘自文字:

  

ABCD ABCD abcdABCD 123ABCD abABCD,DEFG

应选择所有“ ABCD”,“ ABCD”和“ DEFG”

我尝试了以下操作,但失败了:

  

[A-Z] {2,}

     

[^ a-z0-9。,] + [A-Z] + [^ a-z0-9。,] + //无法指定所有符号+“ 3ABCD”仍被接受

2 个答案:

答案 0 :(得分:0)

根据您的问题,我认为您可以使用以下表达式

^[A-Z]+$

^表示开头,$表示结尾,+表示一个或多个元素,因此^[A-Z]+$表示仅包含大写字符

答案 1 :(得分:0)

尝试此正则表达式,

([A-Z]+)[^A-Z]*

此正则表达式捕获组1中的所有连续大写字母,并且可以选择使用任何非大写字母,因此仅在正则表达式的组1中为您提供大写字母。

演示, https://regex101.com/r/Wz38sO/1

您尚未用任何语言标记您的帖子,因此这是Java中的代码演示,

public static void main(String args[]) {
    String s = "ABCD ABCD abcdABCD 123ABCD abABCD,, DEFG";
    Pattern p = Pattern.compile("([A-Z]+)[^A-Z]*");
    Matcher m = p.matcher(s);

    while (m.find()) {
        System.out.println(m.group(1));
    }
}

这将提供以下输出,

ABCD
ABCD
ABCD
ABCD
ABCD
DEFG