我有一個Java程序,並在我的代碼的一部分我要讀這樣,^s(group1) ^s(group2)
一個字符串,然後返回字符串「組1」和「組2」,所以我用這個正則表達式\^s\(.*\)
但它返回整個字符串。如何在正則表達式中執行此操作?
怎麼了?
我有一個Java程序,並在我的代碼的一部分我要讀這樣,^s(group1) ^s(group2)
一個字符串,然後返回字符串「組1」和「組2」,所以我用這個正則表達式\^s\(.*\)
但它返回整個字符串。如何在正則表達式中執行此操作?
怎麼了?
.*
匹配)
所以比賽不會在右括號停止。如果您想要針對嵌套括號組進行額外保險,請嘗試[^\)]*
或[^\(\)]*
。
你也可以考慮使用非貪婪的改性劑,.*?
,這也將解決這個問題。有些人發現比一個否定字符集匹配更可讀。
很好的問題,這兩個那就是它非常符合第一組http://regexr.com/3a14v – 2014-12-04 18:37:54
@GonzaloRizzo,還有第二個問題。請參閱我的編輯。 – 2014-12-04 18:48:13
這不應該是一個問題,因爲我沒有寫過^ y寫過^因爲我想匹配^字符 – 2014-12-04 18:52:21
您可以提取這些詞與groups。
\^s\((.*?)\)
這是說捕捉^ s的任何東西(),並可以這樣使用。
String str = "^s(group1) ^s(group2)";
Matcher m = Pattern.compile("\\^s\\((.*?)\\)").matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
輸出
group1
group2
也許谷歌上搜索了一下,將有助於... :) – 2014-12-04 18:22:28
這是我不知道google一下:/ – 2014-12-04 18:24:40
https://docs.oracle.com/javase/tutorial /essential/regex/intro.html – nLee 2014-12-04 18:26:20