1

我有这样的输入

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

我想从这里捕获1/0/15, 1/0/20, 1/0/17。但是这个输入发生了变化。有时只有 2 个逗号分隔值,有时 1 有时超过 3。

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

使用的语言是Java。

4

3 回答 3

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));
}
于 2012-06-21T23:12:09.360 回答
1

给男人一条鱼……或者

http://gskinner.com/RegExr/

于 2012-06-21T23:09:34.010 回答
0

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

于 2012-06-21T23:07:47.060 回答