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美元
根据你的问题,我想你可以用下面的表达
^[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,将为您工作。如果您还有任何问题,请检查并让我知道。