需要正则表达式来分隔逗号分隔值(接口列表与路由器查询输出)

时间:2012-06-21 22:55:09

标签: java regex

我有这样的输入

RX Only : Gi1/0/15,Gi1/0/20,Gi1/0/17

我想从此捕获1/0/151/0/201/0/17。但是这个输入会改变。有时只有2个逗号分隔值,有时1个有时超过3个。

我想出的正则表达式只捕获了第一组。如果我使用非贪婪的运算符,那么它最后捕获。我应该使用什么正则表达式来分别捕获所有这些组。

使用的语言是Java。

3 个答案:

答案 0 :(得分:3)

为你感兴趣的子串编写正则表达式通常更容易,然后重复使用Matcher.find(),而不是尝试编写匹配整个字符串的正则表达式并从复杂的排列中提取你想要的内容小组。

假设你要找的是由“/”分隔的三个数字的三元组,那么,

Pattern p = Pattern.compile("\\d+/\\d+/\\d+");
Matcher m = p.matcher(inputString);
while (m.find()) {
  // your triple is in group 0
  System.out.println(m.group(0));
}

答案 1 :(得分:1)

给一个人一条鱼......或者

http://gskinner.com/RegExr/

答案 2 :(得分:0)

你真的必须在这里使用正则表达式吗?如果数据格式非常相似,您可以使用indexOf函数与substring结合使用。您必须找到:字符并从下一个字符开始查找comas。然后检查\n的位置并使用较小的索引来检索子字符串。