7
如何在Java正則表達式中表達「不在前面」?例如,我想搜索「:」,但僅當它不直接位於「\」之前時。我怎樣才能做到這一點?如何在Java正則表達式中表達「:」但不是前面加「」?
如何在Java正則表達式中表達「不在前面」?例如,我想搜索「:」,但僅當它不直接位於「\」之前時。我怎樣才能做到這一點?如何在Java正則表達式中表達「:」但不是前面加「」?
"(?<!\\\\):"
的原因四個反斜槓是:
\\
匹配一個反斜槓。\\
,總共有四個反斜槓。示例代碼:
Pattern pattern = Pattern.compile("(?<!\\\\):");
Matcher matcher = pattern.matcher("foo\\:x bar:y");
if (matcher.find()) {
System.out.println(matcher.start());
}
輸出:
10
您是否嘗試過使用字符類的補運算符?
String s1 = "foo : bar";
String s2 = "foo \\: bar";
Pattern p = Pattern.compile("[^\\\\]:");
Matcher m = p.matcher(s1);
if(m.find()) {
System.out.println(m.group());
}
m = p.matcher(s2);
if(m.find()) {
System.out.println(m.group());
}
這無法匹配字符串開頭的':'。 – polygenelubricants 2010-04-26 06:36:49