您可以通过以下方式验证和迭代一个正则表达式的匹配:
name1=x;;name2=y;
通过G
在正则表达式的开头放置a来确保匹配之间没有不匹配的字符(例如),这意味着“上一个匹配的结束”。通过将字符串的长度与进行比较,以检查是否在最后一次匹配中到达了字符串的末尾,该字符串的长度
Matcher.end()
返回了最后一个匹配后的偏移量。
就像是:
String line = "name1=gil;name2=orit;"; Pattern p = Pattern.compile("\G(\w+)=(\w+);"); Matcher m = p.matcher(line); int lastMatchPos = 0; while (m.find()) { System.out.println(m.group(1)); System.out.println(m.group(2)); lastMatchPos = m.end(); } if (lastMatchPos != line.length()) System.out.println("Invalid string!");现场演示。
某些语言可能允许您直接从迭代各个匹配项
^((\w+)=(\w+);)*$,但我不相信您可以使用Java来做到这一点。



