我想把这些东西放回(和)之间。
但是()用于组,并且使用escape \ i得到错误:
Pattern p = Pattern.compile("(\(.*\))");
意外的字符:'('
我该如何防止这种情况?
2010年10月13日星期三20:00:11 +0200(CEST)
2010年10月12日星期二21:27:48 +0200(CEST)
2010年10月12日星期二04:44:57 +0200(西欧(zomertijd))
2010年10月12日星期二03:10:22 +0200(CEST)
2010年10月11日星期一23:10:04 +0200(CEST)
2010年10月11日星期一20:56:27 +0200(CEST)
(我用过java)
答案 0 :(得分:2)
你还需要逃避反斜杠;我也认为你希望逃避在不同的位置(更好地说明你想要匹配的东西):
Pattern p = Pattern.compile("\\(([^()]*)\\)");
<强>解释强>
\\( # literal (
( # start capturing group
[^()]* # any number of characters except parentheses
) # end capturing group
\\) # literal )
答案 1 :(得分:1)
你需要逃脱逃脱:
"(\\(.*?\\))"
请注意,我还使用了“匹配任何东西”的非贪婪版本。
双重转义是因为在字符串文字中,反斜杠用于转义序列(如\n
)所以如果你想在字符串中使用反斜杠,则需要用另一个反斜杠转义它。
答案 2 :(得分:1)
在Java字符串中,您必须转义'\\'
字符,请尝试:
Pattern p = Pattern.compile("(\\(.*\\))");