2014-03-05 131 views
1

假设我有一个字符串kk a.b.cjkmkc jjkocc a.b.c.查找使用正则表达式

我想找到字符串中的子a.b.c在字符串中subtring,但它不工作。

这里是我的代码

Pattern p = Pattern.compile("a.b.c"); 
Matcher m = p.matcher(str); 
int x = m.find() 
+0

在一个正则表达式中'''做什么? –

+1

为什么不简单地使用String.indexOf()? – taytay

回答

6

在Java中Pattern.是一个特殊字符: “任何字符(可能会或可能不会匹配行结束符)”(从java.util.regex.Patternweb page)。

尝试逃脱它:

Pattern p = Pattern.compile("a\\.b\\.c"); 

还要注意:

  • Matcher.find回报boolean,不int
  • Pattern。就拿双逃逸
+0

容易犯的错误,使那些不熟悉正则表达式+1快速和容易回答 – DeadChex

+0

@DeadChex谢谢:) – Mena

0

正如其他人所说,.是正则表达式中一个特殊的系统字符。您可以让Java使用Pattern.quote引用特殊字符。顺便说一下:String.indexof(String)(哪个更快)。如果你真的需要正则表达式,看看这个:

String str = "kk a.b.cjkmkc jjkocc a.b.c."; 
Pattern p = Pattern.compile(Pattern.quote("a.b.c")); 
Matcher m = p.matcher(str); 
while (m.find()) { 
    int x = m.start(); 
    // ... 
}