正则表达式双运算符是单计数

我想检查是否有双重运算符。例如 :


整数结果 = x+y;


结果operatorCounter = 2,它正在工作。但:


for(;i<size;i++)

结果operatorCounter = 3应该是operatorCounter = 2。


我的正则表达式String doubleOperatorPattern = "\'.\\++\'";


我想要的运算符: (++) (--) (==) (&&) (||)


public void findOperator(String file){

    String operatorPattern = "['+''-''*''/''=''<''>''<=''>=''&''|''^''!''\\-?']";

    Pattern pattern = Pattern.compile(operatorPattern);

    Matcher matcher = pattern.matcher(file);

    while (matcher.find()) {

        operatorCounter++;

    }

    String doubleOperatorPatternString = "['==''++''--''&&''||']";

    Pattern doubleOperatorPattern = 

    Pattern.compile(doubleOperatorPatternString);

    Matcher doubleOperatorMatcher = doubleOperatorPattern.matcher(file);

    while(doubleOperatorMatcher.find()){

        operatorCounter--;

    }

}


青春有我
浏览 119回答 1
1回答

料青山看我应如是

您可以在单字符运算符,和之前定义 the++和其他两个字符运算符,如+=or -=first 。如果我们遵循Operators 文档并添加所有 Java 运算符,那么正则表达式会因为转义而变得讨厌:+-=Pattern pattern = Pattern.compile(&nbsp; &nbsp; &nbsp; &nbsp; "\\+\\+|--|" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // ++ --&nbsp; &nbsp; &nbsp; &nbsp; "\\+=|-=|\\*=|" +&nbsp; &nbsp; &nbsp; &nbsp;// += -= *=&nbsp; &nbsp; &nbsp; &nbsp; "/=|%=|&=|\\^=|" +&nbsp; &nbsp; &nbsp; // /= %= &= ^=&nbsp; &nbsp; &nbsp; &nbsp; "\\|=|<<=|>>>=|>>=|" +&nbsp; // |= <<= >>>= >>=&nbsp; &nbsp; &nbsp; &nbsp; "<<|>>>|>>|" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // << >>> >>&nbsp; &nbsp; &nbsp; &nbsp; "==|!=|<=|>=|" +&nbsp; &nbsp; &nbsp; &nbsp; // == != <= >=&nbsp; &nbsp; &nbsp; &nbsp; "&&|\\|\\||" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // && ||&nbsp; &nbsp; &nbsp; &nbsp; "\\+|-|~|!|" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // + - ~ !&nbsp; &nbsp; &nbsp; &nbsp; "\\*|/|%|" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // * / %&nbsp; &nbsp; &nbsp; &nbsp; "\\+|&|\\^|\\||" +&nbsp; &nbsp; &nbsp; // + & ^ |&nbsp; &nbsp; &nbsp; &nbsp; "<|>|=|" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // < > =&nbsp; &nbsp; &nbsp; &nbsp; "instanceof"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // instanceof);Matcher matcher = pattern.matcher("for(;i<size;i++)");int count = 0;while (matcher.find()) {&nbsp; count++;}System.out.println(count);但它会找到<并++打印 2。请注意,这个正则表达式仍然不支持三元运算符? :。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java