Java作为一种开发语言,有许多值得推荐的地方,但是它一直以来没有自带对正则表达式的支持。直到最近,借助于第三方的类库,Java开始支持正则表达式,但这些第三方的类库都不一致、兼容性差,而且维护代码起来很糟糕。在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,终于能够支持正则表达式了。
与一般语言有点不同的是:
对java的解释器来说,在反斜线字符(/)前的字符有特殊的含义。在java中,与regex有关的包,并不都能理解和识别反斜线字符(\),为了让反斜线字符(\)在模式对象中被完全地传递,应该用双反斜线字符(\\)。此外圆括号在正则表达中两层含义,如果想让它解释为字面上意思(即圆括号),也需要在它前面用双反斜线字符(\\)。也就是像下面的一样:
\\(\\d{3}\\)\\s\\d{3}-\\d{4}
许多值得推荐的地方,但是它一直以来没有自带对正则表达式的支持。直到最近,借助于第三方的类库,Java开始支持正则表达式,但这些第三方的类库都不一致、兼容性差,而且维护代码起来很糟糕。 在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包。一个简单的例子:
BufferedReader in;
Pattern pattern = Pattern.compile("\\(\\d{3}\\)\\s\\d{3}-\\d{4}");
in = new BufferedReader(new FileReader("phone"));
String s;
while ((s = in.readLine()) != null)
{
Matcher matcher = pattern.matcher(s);
if (matcher.find())
{
System.out.println(matcher.group());
}
}
in.close();
如果想匹配时忽略大小写,可以这样
Pattern pattern =Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);