我有一个 XML 样式的字符串,我试图让一个组退出while(matcher.find()){}
循环。这是我正在使用的正则表达式:
<myset setName="(.+?)">(.*?)</myset>
当转换为在 java 中使用时:
Pattern setPattern = Pattern.compile("<myset setName=\"(.+?)\">(.*?)</myset>");
Matcher matcher = setPattern.matcher(targetString);
while(matcher.find()){
Log.i(TAG, "First group: " + $1 + " Second group: " + $2);
}
$1
是 setName -- 这应该总是至少 1 个字符。
$2
是开始标签和结束标签之间的所有内容(或什么都没有)。这可以是 0 个或多个字符。
如果我find()
对字符串执行 a :
<myset setName="test"><lots of stuff in this subtag /></myset>
它完美地工作,$1
被分配test
和$2
分配<lots of stuff in this subtag />
但是,如果我find()
对此字符串执行 a :
<myset setName="test"><lots of stuff in this subtag /></myset><myset setName="test2"><more stuff in this subtag /></myset>
然后$1
匹配test
和$2
匹配<lots of stuff in this subtag /></myset><myset setName="test2"><more stuff in here />
预期的行为是第一个find()
应该有$1
matchtest
和$2
match <lots of stuff in this subtag />
。然后第二个find()
应该有$1
matchtest2
和$2
match <more stuff in this subtag />
。
我确信我忽略了一些明显的东西。谢谢!