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