java正则表达式提取指定字符串


String funStr = "((A1+(A1*A2)/SUM(A3:A5))*100+SUM(A6:A8))" ;
Matcher m1 = Pattern.compile("(SUM\\(.*?\\)+)").matcher(funStr);
while (m1.find()) {
System.out.println(m1.group());
System.out.println("----------------");
}

输出:

SUM(A3:A5))
----------------
SUM(A6:A8))
----------------

 

String funStr = "((A1+(A1*A2)/SUM(A3:A5))*100+SUM(A6:A8))/sum(A9:A11)" ;
Matcher m1 = Pattern.compile("(SUM\\(.*?\\)+)|(sum\\(.*?\\)+)").matcher(funStr);
输出:

SUM(A3:A5))
----------------
SUM(A6:A8))
----------------
sum(A9:A11)
----------------


注意:这里匹配出了两个右括号。
可以把加号去掉再试一下:
String excelFunRex = "(COUNT\\(.*?\\))|(ROUND\\(.*?\\))|(MIN\\(.*?\\))|(MAX\\(.*?\\))|(SUM\\(.*?\\))|(AVERAGE\\(.*?\\))" ;
String funStr = "(A1+((A1*A2)/SUM(A3:A5))*100+SUM(A6:A8)/sum(A9:A11)+MAX(a123)" ;

 得到以下结果:

SUM(A6:A8)
MAX(a123)
SUM(A3:A5)

 

 

解释:

^在[]里面为取反 在外面为开头匹配
$为结尾匹配
\\d为数字(其中第一个\是转义)
+是匹配一次或者多次
?是匹配字表达式的零次或者一次
[]标记表达式开始和结束
()子表达式的开始和结束
.匹配除换行符 \n 之外的任何单字符
|指明两项之间的一个选择。要匹配 |


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM