java编程括号匹配,Java正则表达式括号内容匹配
Java正則表達式括號內容匹配
工作中碰到的一些問題與解決方法記錄下來以備不時之需
商品品名規定英文括號正則表達式拆分規則
.*? :所有內容
[1-9] :整數數字1到9
\d :0到9
\d* :*表示可跟多個數字
\. :小數點
\.? :?表示無小數點或有小數點
規則是要根據英文括號"()"來把品名拆分多行,難免品名中會包含括號在內,容易混淆匹配規則
1 String nameInput = "小蘋果(1)(1富士康品種)大蘋果(2)(2蘋果梨)梨(1)";
2 try{
3 //String pattern = "(.*?)\\(.*?\\)";
4 String pattern = "(.*?)\\([1-9]\\d*\\.?\\d*\\)";
5 Pattern r = Pattern.compile(pattern);
6 Matcher m = r.matcher(nameInput);
7 while (m.find()) {
8 System.out.println(m.group(0));
9 }
10 }catch (Exception e){
11 e.printStackTrace();
12 }
代碼中注釋的那一行只能匹配英文括號中所有內容,但是“大蘋果”這個商品被分成兩行了,因為前面英文括號的內容也在匹配范圍內。
輸出為:
小蘋果(1)
(1富士康品種)
大蘋果(2)
(2蘋果梨)梨(1)
String pattern = "(.*?)\\([1-9]\\d*\\.?\\d*\\)"
這行代碼可以達到要求,輸出為:
小蘋果(1)
(1富士康品種)大蘋果(2)
(2蘋果梨)梨(1)
原文鏈接:https://www.cnblogs.com/sjzhai/p/13535979.html
總結
以上是生活随笔為你收集整理的java编程括号匹配,Java正则表达式括号内容匹配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【PS5串流】使用chiaki实现ps5
- 下一篇: WPF 使用Image控件显示图片