Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 仅用于大写字符的正则表达式_Regex - Fatal编程技术网

Regex 仅用于大写字符的正则表达式

Regex 仅用于大写字符的正则表达式,regex,Regex,我想要一个正则表达式,只从数据流中选择大写字符,而不选择任何前后小写字符、数字和符号 有效期: ABCD 无效: abcABCD 123ABCD $ABCD AB12美元 案文如下: xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao 123 xiao xiao xiao xiao xi 它应选择所有“ABCD”、“ABCD”和“DEFG” 我尝试了以下方法,但失败了:

我想要一个正则表达式,只从数据流中选择大写字符,而不选择任何前后小写字符、数字和符号

有效期:

  • ABCD
无效:

  • abcABCD
  • 123ABCD
  • $ABCD
  • AB12美元
案文如下:

xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao xiao 123 xiao xiao xiao xiao xi

它应选择所有“ABCD”、“ABCD”和“DEFG”

我尝试了以下方法,但失败了:

[A-Z]{2,}

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


根据你的问题,我想你可以用下面的表达

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

([A-Z]+)[^A-Z]*
此正则表达式捕获组1中的所有连续大写字母,并可选择使用任何非大写字母,因此仅在正则表达式的组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

^[A-Z]+$
这对你有用吗?你要找的是
([A-Z]+)
,但是你需要迭代所有的组才能得到你的结果名。。。您忘记了一个+符号:^[a-Z]+$@xtmq是的,谢谢lot@Adnan对于您的原始问题,您只需请求一个正则表达式,如果您想在流中检查它,请更新您的问题如果我有一个数据流,如“ABCD ABCD ABCD ABCDN 123ABCD ABCD ABCD”,它应该选择前两个“ABCD”,但它没有。@Adnan在您的问题中添加代码,没有注释,没有代码,没有人知道发生了什么检查:第二个ABCD失败,因为它需要一个已经为上一个ABCDOk计算过的空间最初您想要匹配的输入数据不在那里,所以我无法给您一个精确的正则表达式。我已经更新了我的正则表达式和演示url,将为您工作。如果您还有任何问题,请检查并让我知道。