常用的正则表达式符号

日常工作中会经常遇到需要读或写正则表达式的场景,但是博主记忆力实在太差,就连常用的正则表达式符号在用的时候也许现查一下。为此,我决定,把常用的正则表达式符号记录在本博文中,以备不时之需。

基本符号

字符(Characters)

字符

字符组(Character classes)

字符组

预定义字符组(Predefined character classes)

预定义

边界匹配(Boundary matchers)

边界符 ^和$非常常用,切记!

贪婪修饰符(Greedy quantifiers)

贪婪

逻辑操作符

逻辑操作符 上图中最后一项的用法,会在下文中具体说明。

Java中的用法

正则表达式在Java中主要涉及到两个类,均位于java.util.regex包下,分别为Pattern和Matcher。最基本的用法如下:

Pattern p = Pattern.compile("a{4}b{1}$");  
Matcher m = p.matcher("aaaaabaaaab");k  
boolean b = m.matches();  

上述代码非常简单,即匹配字符串末尾是否为4个a和1个b,毫无疑问,结果为true。 有时候,我们的需求可能会比上述用法复杂一些,比如可能需要提取字符串中匹配的字符,这个时候就用到了上述组匹配的用法。先看代码:

Pattern p = Pattern.compile("(a{4})(b{1})$");  
Matcher m = p.matcher("aaaaabaaaab");  
if (m.find()) {  
    System.out.println(m.group(0));
    System.out.println(m.group(1));
    System.out.println(m.group(2));
}

上述代码的运行结果如下:

aaaab  
aaaa  
b  

这就是组匹配的用法,注意组匹配的0永远代表整个匹配的字符串。这样我们就可以根据实际情况对正则表达式进行分组,以提取相应的字符串。

先写这么多,以后有别的用法再单独加上。

参考:JDK官方文档

Shaohang Zhao

Read more posts by this author.