大写字母的 Java 正则表达式

标签 java regex

我开始熟悉 Java,但我仍然觉得正则表达式很困惑。我需要检查一个元素是否连续有两个大写字母,连续三个大写字母,连续四个大写字母,或者一个大写字母,一个空格,然后是另一个大写字母。这是我到目前为止的代码,但我觉得有更好(也更有效)的方法来做到这一点。

 public class First {
    public static void main(String[] args) {
        String one = "A scenario - CAPI 200 - 001";
        String two = "A scenario - C T 200 - 001";
        String three = "A scenaRio - CT 200 - 001";
        String four = "A sCenario - CAP 200 - 001";


        Pattern p = Pattern.compile("[A-Z][A-Z][A-Z][A-Z]");
        Pattern q = Pattern.compile("[A-Z] [A-Z]");
        Pattern r = Pattern.compile("[A-Z][A-Z]");
        Pattern s = Pattern.compile("[A-Z][A-Z][A-Z]");

        Matcher m =p.matcher(one);
        if (m.find()){
            System.out.println(m.group());
        }
        Matcher d =q.matcher(two);
        if (d.find()){
            System.out.println(d.group());
        }
        Matcher e =r.matcher(three);
        if (e.find()){
            System.out.println(e.group());
        }
        Matcher a =s.matcher(four);
        if (a.find()){
            System.out.println(a.group());
        }
    }
}

如有任何帮助,我们将不胜感激。

最佳答案

用这个来匹配2-4个大写字母,或者大写,空格,大写

([A-Z]{2,4})|([A-Z] [A-Z]) 

编辑: 刚刚意识到您可能需要区分匹配的组。

在这种情况下,您所做的并没有错,但可以使用 [A-Z]{2} 方法进行优化以缩短正则表达式。如果您告诉我们代码需要做什么,我们可以更好地提出满足您需求的解决方案。

关于大写字母的 Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24186561/

相关文章:

java - 安全发布和初始化安全在 .NET 中是否有效?

java - 设置一些已处置或不可见的java

php - 使用 HTMLPurifier 或正则表达式删除嵌套的 html 标签

regex - 如何在第一个大写字符之前创建一个以文件名的一部分命名的文件夹,并将相应的文件移动到新目录中

java - Maven Netbeans 应用程序找不到 ServiceProvider

java - 如何将标准输入转换为字符串?

java - Gradle 和 Java : what is the correct way of calling the system properties in test task

javascript - jQuery - 将条件存储在字符串中并稍后执行

java - 如何获取字符串中第一个字母的位置

C 正则表达式 : Extracting the Actual Matches