初识java正则表达式
2017-03-26 10:46
316 查看
1、比较两种代码
(1)不用正则表达式
可以明显看见使用正则表达式的代码量要少些,使用的更方便。
2、介绍正则表达式
使用正则表达式离不开两个类,Pattern类和Matcher类,这里Pattern类主要是进行正则规范(如上面的代码中"[0-9]+"),而Matcher类主要是执行规范,验证字符串是否符合规范,其实从上面代码中也可以看出这两个类是属于java.util.Regex。
Pattern类常用方法(如果要取得Pattern类实例,必须使用compile()方法)
(1)public static Pattern compile(String regex)静态方法指定正则表达式规则并返回Pattern类
(2)public Matcher matcher(CharSequence input)返回Matcher类实例
注意:CharSequence 是个接口 已知所实现类:charBuffer,Segment,String,StringBuffer,StringBuilder
(3)public String[] split(CharSequence input)字符串拆分
Matcher类常用方法
(1)public boolean matches()执行验证
(2)public String replaceAll(String replacement)字符串替换(所有都替换)
常用正则规范
(1)\\ 表示反斜线(\)
字符\t 表示制表符
(2)\n 表示换行
[abc] 字符a,b或c
(3)[^abc] 表示除了a,b,c之外的任意字符
[a-zA-Z0-9]
表示由字母、数字组成
(4)\d表示数字
\D表示非数字
(5)\w表示字母、数字、下划线
\W表示非字母、数字、下划线
(6)\s表示所有空白字符(换行、空格等)
\S表示所有非空白字符
(7)^行的开头
$
行的结尾
(8).匹配除换行符之外的任意字符
数量表示(X表示一组规范)
(1)X必须出现一次
X?可以出现0次或1次
(2)X*可以出现0次、1次或多次
X+可以出现1次或多次
(3)X{n}必须出现n次
X{n,}必须出现n次以上
X{n,m}必须出现n~m次
逻辑运算符(X,Y表示一组规范)
XYX规范后跟着Y规范X|YX规范或Y规范(X)作为一个捕获组的规范
3、String类对正则表达式的支持
在String类中有3个方法支持正则表达式
(1)public boolean matches(String regex)字符串匹配
(2)public String replaceAll(String regex,String replacement)字符串替换
(3)public String[] split(String regex)字符串拆分
其实可以看出使用String类的方法比较方便许多
(1)不用正则表达式
package com.dengdi.regex; //不用正则表达式 public class RegexDemo01 { public static void main(String[] args) { String str="0123456789"; boolean flag=false; char[] chars=str.toCharArray(); for(int i=0;i<chars.length;i++){ if(chars[i]<'1'||chars[i]>'9'){ flag=true; break; } } if(flag){ System.out.println("不是由数字1~9组成"); }else{ System.out.println("是由数字1~9组成"); } } }(2)使用正则表达式
package com.dengdi.regex; import java.util.regex.Pattern; public class RegexDemo02 { public static void main(String[] args) { String str="123456789"; if(Pattern.compile("[0-9]+").matcher(str).matches()){ System.out.println("是由数字组成!"); }else{ System.out.println("不是由数字组成!"); } } }
可以明显看见使用正则表达式的代码量要少些,使用的更方便。
2、介绍正则表达式
使用正则表达式离不开两个类,Pattern类和Matcher类,这里Pattern类主要是进行正则规范(如上面的代码中"[0-9]+"),而Matcher类主要是执行规范,验证字符串是否符合规范,其实从上面代码中也可以看出这两个类是属于java.util.Regex。
Pattern类常用方法(如果要取得Pattern类实例,必须使用compile()方法)
(1)public static Pattern compile(String regex)静态方法指定正则表达式规则并返回Pattern类
(2)public Matcher matcher(CharSequence input)返回Matcher类实例
注意:CharSequence 是个接口 已知所实现类:charBuffer,Segment,String,StringBuffer,StringBuilder
(3)public String[] split(CharSequence input)字符串拆分
Matcher类常用方法
(1)public boolean matches()执行验证
(2)public String replaceAll(String replacement)字符串替换(所有都替换)
常用正则规范
(1)\\ 表示反斜线(\)
字符\t 表示制表符
(2)\n 表示换行
[abc] 字符a,b或c
(3)[^abc] 表示除了a,b,c之外的任意字符
[a-zA-Z0-9]
表示由字母、数字组成
(4)\d表示数字
\D表示非数字
(5)\w表示字母、数字、下划线
\W表示非字母、数字、下划线
(6)\s表示所有空白字符(换行、空格等)
\S表示所有非空白字符
(7)^行的开头
$
行的结尾
(8).匹配除换行符之外的任意字符
数量表示(X表示一组规范)
(1)X必须出现一次
X?可以出现0次或1次
(2)X*可以出现0次、1次或多次
X+可以出现1次或多次
(3)X{n}必须出现n次
X{n,}必须出现n次以上
X{n,m}必须出现n~m次
逻辑运算符(X,Y表示一组规范)
XYX规范后跟着Y规范X|YX规范或Y规范(X)作为一个捕获组的规范
package com.dengdi.regex; import java.util.regex.Matcher; import java.util.regex.Patter 4000 n; //验证一个字符串是否合法 public class RegexDemo03 { public static void main(String[] args) { String str="1983-07-27"; String regex="\\d{4}-\\d{2}-\\d{2}";//定义验证格式 Pattern pattern=Pattern.compile(regex);//实例化Pattern类 Matcher matcher=pattern.matcher(str);//验证字符串是否合法 if(matcher.matches()){ //使用正则验证 System.out.println("格式正确!"); }else{ System.out.println("格式不正确!"); } } }
package com.dengdi.regex; import java.util.regex.Pattern; //按照字符串的数字将字符串拆分 public class RegexDemo04 { public static void main(String[] args) { String str="A1B22C333D4444F55555E666666"; String regex="\\d+"; Pattern pattern=Pattern.compile(regex); String[] strs=pattern.split(str); for(int i=0;i<strs.length;i++){ System.out.println(strs[i]); } } }
package com.dengdi.regex; import java.util.regex.Matcher; import java.util.regex.Pattern; //将全部的数字替换成"_" public class RegexDemo05 { public static void main(String[] args) { String str="A1B22C333D4444F55555E666666"; String regex="\\d+"; Pattern pattern=Pattern.compile(regex); Matcher matcher=pattern.matcher(str); String newStr=matcher.replaceAll("_");//替换数字 System.out.println(newStr); } }
3、String类对正则表达式的支持
在String类中有3个方法支持正则表达式
(1)public boolean matches(String regex)字符串匹配
(2)public String replaceAll(String regex,String replacement)字符串替换
(3)public String[] split(String regex)字符串拆分
其实可以看出使用String类的方法比较方便许多
package com.dengdi.regex; public class RegexDemo06 { public static void main(String[] args) { String str="A1B22C333D4444F".replace("\\d+", "_"); boolean temp="1996-01-22".matches("\\d{4}-\\d{2}-\\d{2}"); String[] strs="A1B22C333D4444F".split("\\d+"); System.out.println("字符串替换操作:"+str); System.out.println("字符串验证操作:"+temp); System.out.println("字符串拆分操作:"); for(int i=0;i<strs.length;i++){ System.out.print(strs[i]+"\t"); } } }
相关文章推荐
- 初识Java正则表达式
- Java——正则表达式_初识网络爬虫
- JAVA与正则表达式(一年级)(转)
- 调试工具系列--java 正则表达式(regular expression)调试工具
- 关于java的正则表达式
- Java正则表达式详解
- 【转】车东:Java正则表达式详解
- Regular Expression 正则表达式-2 (Java)
- java正则表达式; regular expression
- JAVA正则表达式4种常用功能
- JAVA中正则表达式的应用 (一)
- JAVA与正则表达式(2年级之1)
- Java正则表达式详解
- Java正则表达式详解
- Java正则表达式详解
- Java正则表达式详解
- JAVA中正则表达式的应用 (二)
- Java正则表达式详解
- java和正则表达式
- 【转】车东:Java正则表达式详解