编辑:我想也需要,如果可能的话,有正则表达式匹配字符串格式Java的匹配组捕捉
[id='value1' or id='value2' or ... or id='valueN']
,并捕获所有的值。
我有一段代码不能像我期望的那样工作,我不确定我的错误在哪里。 基本上我有一个像
[id='id1' or id='id2' or id='id3']
一个字符串,我需要找到所有的值,如id1
,id2
和id3
。
final String regex = "\\[id='([^']+)'(?:\\s*or\\s*id='([^']+)')*\\]";
final String text = "[id='id1' or id='id2' or id='id3']";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(text);
如果我做
while(matcher.find())
{
System.out.println(matcher.group(1));
}
我只得到
id1
随着
if (matcher.matches())
{
System.out.println("Groups count: " + matcher.groupCount());
for (int i = 1; i <= matcher.groupCount(); i++)
{
System.out.println(matcher.group(i));
}
}
我得到
id1
id3
预计产量将
id1
id2
id3
既不输出所预期的。有人可以指出,如果正则表达式是错误的,或者是因为该组找到部分代码?
嗨,谢谢你的回复。它可以像你提到的那样工作,但是正则表达式的限制性不足以匹配模式。其他字符串,如“[id ='id1'和id ='id2'和id ='id3']”将匹配正则表达式。有没有办法让验证和捕获都只有一个正则表达式?谢谢 – user4132657 2014-10-11 19:56:37