初识java正则表达式
来源:互联网 发布:大数据职位 编辑:程序博客网 时间:2024/05/01 00:17
1、比较两种代码
(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.Pattern;//验证一个字符串是否合法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正则表达式
- C#----初识正则表达式
- 初识正则表达式
- 初识正则表达式
- 正则表达式-01 初识
- 初识正则表达式
- 正则表达式初识
- 01-初识正则表达式
- 初识正则表达式
- 正则表达式初识
- Python正则表达式初识
- 初识正则表达式
- 【Linux】正则表达式初识
- 初识正则表达式
- 初识正则表达式
- Java——正则表达式_初识网络爬虫
- 中位数
- php-fpm注册成服务 service
- LeetCode之Nim Game
- oracle 11g首次装好后出现 ORA-01017 invalid username/password;logon denied;
- 线性代数 学习记录
- 初识java正则表达式
- DFS
- LeetCode 210. Course Schedule II
- MySQL InnoDB引擎 MVCC并发控制
- Google Photos 会自动修正照片的白平衡了
- java基础学习(七)多态
- python django 集成已有的数据库
- 堆排序
- 蟠桃记