【发布时间】:2010-08-09 23:35:32
【问题描述】:
我有以下正则表达式 (abc|def)( ?(\\d+|(?:(?!\\1)[a-z])+)?)* 与主题 abc123 456 完美匹配。
现在我想得到所有部分 abc、123 和 456。
我使用以下代码:
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(subject);
while(m.find())
{
System.out.println(m.group());
}
但我只得到abc123 456。
欢迎提出任何想法。
【问题讨论】:
-
虽然我没有分析整个模式,但这看起来过于复杂。特别是,在
(abc|def|[a-z]+)中,[a-z]+部分将匹配“abc”或“def”,因此将它们列为替代品没有区别。 -
我忘记使用实际模式。 ;) 现在它是正确的。
-
模式可能与输入匹配良好,但是否正确匹配组?
-
是的,它可以工作,但我注意到我可以简化正则表达式。 abc|def 是命令,然后是由空格分隔的参数。我正在寻找一种方法来获得它们。但是我觉得截断命令,按空格分割比较容易,不是吗?