您的位置:首页 > 其它

快速掌握正则表达式,掌握常用的就ok

2016-04-06 16:23 204 查看
正则表达式其实只需要会用一些常用的的字符匹配规则,就能够写出大多数的字符匹配规则,下面就直接介绍一下常用正则表达式的匹配:
.--匹配任意一个字符
X*--表示字符X出现了0次或者多次
X+--表示字符X出现了1次或者多次
X?--表示字符X出现0次或者1次


// .表示任意一个字符(a字符是否匹配.)
System.out.println("a".matches("."));//true
// x*表示x出现0次或者多次(,a字符是否匹配a*)
System.out.println("a".matches("a*"));//true
// x+表示x出现1次或者多次(aaaa是否匹配a+)
System.out.println("aaaa".matches("a+"));//true
// x?表示x出现0次或者1次(a是否匹配a?)
System.out.println("a".matches("a?"));//true


[abc]--表示字符a,b,c中的任意一个,[]里面无论有多少内容,都代表匹配的是一个字符
[^abc]--任何字符,除了 a、b 或 c(否定), []里面有^代表取反
[a-z&&[def]]--d、e 或 f(交集)//(&&表示取交集)
[a-z|A-Z]---a 到 z 或 A 到 Z中的一个(并集)//(|代表取并集,在[]内可以省略,像下面那样)
也可以这样表示[a-zA-Z]或者[[a-z][A-Z]]或者[a-z[A-Z]]


//是否取反
System.out.println("a".matches("[abc]"));//true
System.out.println("a".matches("[^abc]"));//false
//并集,一个意思
System.out.println("a".matches("[a-zA-Z]"));//true
System.out.println("B".matches("[a-z|A-Z]"));//true
System.out.println("a".matches("[a-z[A-Z]]"));//true
System.out.println("a".matches("[a-z]|[A-Z]"));//true
//交集
System.out.println("G".matches("[A-Z&&[RFG]]"));//true


\d--表示的是[0-9]中的一个数字
\s--表示空白字符(比如制表符,换行符.回车符等)
\w--表示单词字符[0-9A-Za-z_]中的一个
\\--表示\
补充一下 在java中\不代表任何转义字符,如果想要表示反斜杠
在java中需要在反斜杠前面加一个\转义表示一个"\"
在正则表达式中含有"\"的时候,需要加一个\再次转义,为了区分java


System.out.println("1".matches("\\d"));//true
System.out.println(" ".matches("\\s"));//true
System.out.println("_".matches("\\w"));//true
//java中书写的时候\\代表一个\,在正则表达式中\\才匹配一个\,
// 在正则表达式中含有"\"的时候,需要加一个\再次转义,为了区分java
//这里正则表达式中含有两个\,所以要转义2次
System.out.println("\\".matches("\\\\"));//true


X{n}--表示字符X出现n次
X{n,}--表示字符X至少出现n次
X{n,m}--表示字符X最少出现n次,最多出现m次


// 数字出现5次
System.out.println("12345".matches("\\d{5}"));//true
// 数字至少出现5次
System.out.println("123456".matches("\\d{5,}"));//true
// 数字至少出现5次,最多出现7次
System.out.println("1234567".matches("\\d{5,7}"));//ture


^--表示行的开头
$--表示行的结尾


// ^表示一行的开头,只用于开头,注意区分[]内的^
System.out.println("hello sir".matches("^h.*"));//true
// $表示一行的结尾,只用于结尾
System.out.println("hello sir".matches(".*ir$"));//true


最后补充一下,上面我们一使用String类中matches方法,然而正则表达式还是要使用下面这种方式来匹配比较好,效率更高一些。

Pattern p = Pattern.compile("a*b");// 先编译一下正则表达式的字符串,之后产生的一个模式
Matcher m = p.matcher("aaaaab");//这种模式匹配一下字符串之后产生的结果
boolean b = m.matches();//是否匹配
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  正则表达式