2010-04-25 39 views

Trả lời

14

Sử dụng một negative lookbehind:

"(?<!\\\\):" 

Lý do cho bốn dấu xồ nguợc là:

  • dấu chéo ngược là một nhân vật đặc biệt trong biểu thức thông thường, do đó bạn cần sự biểu hiện thường xuyên \\ để phù hợp với một dấu chéo ngược đơn .
  • dấu gạch chéo ngược phải được thoát trong chuỗi Java, do đó, mỗi dấu gạch chéo ngược ở trên phải được viết là \\, cho tổng số là bốn.

Ví dụ mã:

Pattern pattern = Pattern.compile("(?<!\\\\):"); 
Matcher matcher = pattern.matcher("foo\\:x bar:y"); 
if (matcher.find()) { 
    System.out.println(matcher.start()); 
} 

Output:

10 
1

Bạn có thử sử dụng một lớp nhân vật với các nhà điều hành bổ sung?

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()); 
    } 
+0

Điều này không khớp với ':' ở đầu chuỗi. – polygenelubricants

Các vấn đề liên quan