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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值