java pattern 如何匹配用逗号分隔的很复杂的表达式?

开始我做的是匹配aa:bb,cc,dd:e...这种就是多个项用逗号隔开,每个项可以用冒号链接一个附加项我写的表达式是\\w+(:\\w+)?(,\\w+(:\\w+)?... 开始我做的是匹配 aa:bb,cc,dd:e ...
这种
就是多个项用逗号隔开,每个项可以用冒号链接一个附加项

我写的表达式是
\\w+(:\\w+)?(,\\w+(:\\w+)?)*

\\w+(:\\w+)? 就是用来匹配逗号分开的每个项的

我有个疑惑,假如每个项的内容非常复杂,比如匹配某个项的正则表达式是xxxxxxxxxxxxxxxxxxxxxxxxxx

那么我上面的规则就要改成
xxxxxxxxxxxxxxxxxxxxxxxxxx(,xxxxxxxxxxxxxxxxxxxxxxxxxx)*
感觉很乱很麻烦

有没有精简的方法表示 用逗号分隔开的若干个 项目?能不能不让xxxxxxxxxxxxxxxxxxxxxxxxxx出现两次?
额,我没写清楚,其实是一个项为 xx 或者 xx:xx ,多个项之间用逗号隔开为一组,多个组用分号隔开,所以表达式才那么复杂。
假如\\w+(:\\w+ 用 xx表示,我的表达式就是
xx)?(,xx)?)*(;xx)?(,xx)?)*)*

xx重复了四次,如果多个规则:用-分隔开每个项,那就要写成
xx)?(,xx)?)*(;xx)?(,xx)?)*)*(-xx)?(,xx)?)*(;xx)?(,xx)?)*)*)*
那就要重复八次,那就太复杂了……
展开
 我来答
紫薇参星
科技发烧友

推荐于2016-10-14 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3578万
展开全部

按照你的要求匹配aa:bb,cc,dd:e简化的Java正则表达式: (:?\\w+,?)+

我给你个Java程序的例子,你可以参考一下.

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class A {

 public static void main(String[] args) {

  String s="aa:bb,cc,dd:e";

  String regex="(:?\\w+,?)+";

  Pattern p=Pattern.compile(regex);

  Matcher m=p.matcher(s);

  if(m.matches()){

   System.out.println(m.group());

  }

 }

}

运行结果:

aa:bb,cc,dd:e

蓝风水晶灵
2014-09-03 · TA获得超过934个赞
知道小有建树答主
回答量:731
采纳率:0%
帮助的人:434万
展开全部
private static final String BASE_REGEXP = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
private static final String FULL_REGEXP = BASE_REGEXP + "(," + BASE_REGEXP + ")*";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式