編輯:我想也需要,如果可能的話,有正則表達式匹配字符串格式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