请看看下面的代码:重叠组捕捉
public static void main(String[] args) {
String s = "a <b> c > d";
String regex = "(\\w\\s*[<>]\\s*\\w)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);
int i = 0;
while (m.find()) System.out.println(m.group(i++));
}
上述程序的输出是:a < b, c > d
但我确实希望a < b, b > c, c > d
。
我的正则表达式在这里有什么问题吗?
这适用于此特定字符串“a < b > c> d”,但是当我将其更改为“abc> x> y”时,它会失败。如果我将正则表达式更改为“(?=(\\ w + \\ s * [<>] {1} \\ s * \\ w +))。”,则输出:abc y,其中“bc
2011-04-02 06:10:03
通过添加一些边界匹配器,我终于使其工作!看到我对这个问题的回答。约翰得到了信用但是;) – 2011-04-04 01:22:19
太棒了!为了支持CDN js路径(包括'http:'),正则表达式的一个非常小的更新:(?= [\\ s,;] + |(?<![\\ w \\/\\ - \ \:])([\\瓦特\\/\\ - \\] + \\ S * [<>] \\ S * [\\瓦特\\/\\ - \\ .:] +) ) – 2011-04-05 05:20:17