請看看下面的代碼:重疊組捕捉
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