日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java正则表达式中的坑String.matches(regex)、Pattern.matches(regex, str)和Matcher.matches()

發布時間:2023/12/3 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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()的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。