我只需要一个正则表达式,仅从数据流中选择大写字符,而没有任何前或后的小写字符,数字,符号。
有效:
无效:
摘自文字:
ABCD ABCD abcdABCD 123ABCD abABCD,DEFG
应选择所有“ ABCD”,“ ABCD”和“ DEFG”
我尝试了以下操作,但失败了:
[A-Z] {2,}
[^ a-z0-9。,] + [A-Z] + [^ a-z0-9。,] + //无法指定所有符号+“ 3ABCD”仍被接受
答案 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