java正则表达式中的坑String.matches(regex)、Pattern.matches(regex, str)和Matcher.matches()
生活随笔
收集整理的這篇文章主要介紹了
java正则表达式中的坑String.matches(regex)、Pattern.matches(regex, str)和Matcher.matches()
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題:程序會計算表達式的值
//將數值轉換以K為單位 String value = "10*1000*1000"; String regex="\\s*\\*\\s*1000\\s*"; boolean isMatch = value .matches(regex); if(isMatch){value = value.replaceFirst(regex,""); }else{String[] nums = value.split("\\s*\\*\\s*");double val= Double.parseDouble(nums[0]);for(int i=1;i<nums.length;i++){val*=Double.parseDouble(nums[i]);}value = Double.toString(val/1000); } System.out.println(value);//10000.0?
在百思不得其解的過程中,直到去查看了官方的文檔,在找出原因。
String.matches(regex)方法本質調用了Pattern.matches(regex, str),而該方法調Pattern.compile(regex).matcher(input).matches()方法,而Matcher.matches()方法試圖將整個區域與模式匹配,如果匹配成功,則可以通過開始、結束和組方法獲得更多信息。
?
總的來說,String.matches(regex),Pattern.matches(regex, str),Matcher.matches()都是全局匹配的,相當于"^regex$"的正則匹配結果。如果不想使用全局匹配則可以使用Matcher.find()方法進行部分查找。
?
總結
以上是生活随笔為你收集整理的java正则表达式中的坑String.matches(regex)、Pattern.matches(regex, str)和Matcher.matches()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java的并发编程中的多线程问题到底是怎
- 下一篇: 用了N年电脑都不知!瞬间让U盘速度暴增的