Java常用类库--正则表达式(Pattern类、Matcher类)
来源:互联网 发布:ubuntu 循环登录 编辑:程序博客网 时间:2024/05/22 07:47
1、认识正则
public class RegexDemo01{public static void main(String args[]){String str = "1234567890" ;// 此字符串由数字组成boolean flag = true ;// 定义一个标记变量// 要先将字符串拆分成字符数组,之后依次判断char c[] = str.toCharArray() ;// 将字符串变为字符数组for(int i=0;i<c.length;i++){// 循环依次判断if(c[i]<'0'||c[i]>'9'){// 如果满足条件,则表示不是数字flag = false ;// 做个标记break ;// 程序不再向下继续执行}}if(flag){System.out.println("是由数字组成!") ;}else{System.out.println("不是由数字组成!") ;}}};
基本思路:就是将字符串拆分,之后一个个的进行比较的验证,但是这样比较麻烦,而且现在只是验证是否由数字组成,如果更加复杂的呢?
此时,将代码换成正则表达式,再观察效果;
import java.util.regex.Pattern ;public class RegexDemo02{public static void main(String args[]){String str = "1234567890" ;// 此字符串由数字组成if(Pattern.compile("[0-9]+").matcher(str).matches()){// 使用正则System.out.println("是由数字组成!") ;}else{System.out.println("不是由数字组成!") ;}}};
2、Pattern、Matcher类
以上的正则,如果要想驱动起来,则必须依靠Pattern类和Matcher类。
Pattern主要是表示一个规则的意思,即:正则表达式的规则需要在Pattern类中使用。
Matcher类主要表示使用Pattern指定好的验证规则。
Pattern主要是表示一个规则的意思,即:正则表达式的规则需要在Pattern类中使用。
Matcher类主要表示使用Pattern指定好的验证规则。
import java.util.regex.Pattern ;import java.util.regex.Matcher ;public class RegexDemo03{public static void main(String args[]){String str = "1983-07-27" ;// 指定好一个日期格式的字符串String pat = "\\d{4}-\\d{2}-\\d{2}" ;// 指定好正则表达式Pattern p = Pattern.compile(pat) ;// 实例化Pattern类Matcher m = p.matcher(str) ;// 实例化Matcher类if(m.matches()){// 进行验证的匹配,使用正则System.out.println("日期格式合法!") ;}else{System.out.println("日期格式不合法!") ;}}};
在Pattern类中也可以使用正则进行字符串的拆分功能。
import java.util.regex.Pattern ;import java.util.regex.Matcher ;public class RegexDemo04{public static void main(String args[]){// 要求将里面的字符取出,也就是说按照数字拆分String str = "A1B22C333D4444E55555F" ;// 指定好一个字符串String pat = "\\d+" ;// 指定好正则表达式Pattern p = Pattern.compile(pat) ;// 实例化Pattern类String s[] = p.split(str) ;// 执行拆分操作for(int x=0;x<s.length;x++){System.out.print(s[x] + "\t") ;}}};
还可以使用Matcher类中的字符串替换功能。
范例:将字符串中的全部数字替换成“_”
import java.util.regex.Pattern ;import java.util.regex.Matcher ;public class RegexDemo05{public static void main(String args[]){// 要求将里面的字符取出,也就是说按照数字拆分String str = "A1B22C333D4444E55555F" ;// 指定好一个字符串String pat = "\\d+" ;// 指定好正则表达式Pattern p = Pattern.compile(pat) ;// 实例化Pattern类Matcher m = p.matcher(str) ;// 实例化Matcher类的对象String newString = m.replaceAll("_") ;System.out.println(newString) ;}};
3、String类对正则的支持
从之前的操作中,可以发现,很多的代码除了要求的字符串不同,使用的正则规则不同,基本上就没有什么特别的了。
所以在JDK1.4之后,Java对正则进行了一些扩充,在String中开始直接支持正则的操作。
所以在JDK1.4之后,Java对正则进行了一些扩充,在String中开始直接支持正则的操作。
import java.util.regex.Pattern ;import java.util.regex.Matcher ;public class RegexDemo06{public static void main(String args[]){String str1 = "A1B22C333D4444E55555F".replaceAll("\\d+","_") ;boolean temp = "1983-07-27".matches("\\d{4}-\\d{2}-\\d{2}") ;String s[] = "A1B22C333D4444E55555F".split("\\d+") ;System.out.println("字符串替换操作:" + str1) ;System.out.println("字符串验证:" + temp) ;System.out.print("字符串的拆分:") ;for(int x=0;x<s.length;x++){System.out.print(s[x] + "\t") ;}}};
但是,在使用正则的时候有一点是需要特表注意的。
现在,假设有如下的一个字符串的拆分程序:
import java.util.regex.Pattern ;import java.util.regex.Matcher ;public class RegexDemo07{public static void main(String args[]){String info = "LXH:98|MLDN:90|LI:100" ;// 定义一个字符串// 拆分的形式:/*LXH-->98MLDN-->90LI-->100*/String s[] = info.split("\\|") ;System.out.println("字符串的拆分:") ;for(int x=0;x<s.length;x++){String s2[] = s[x].split(":") ;System.out.println(s2[0] + "\t" + s2[1]) ;}}};
如果有时候发现一个字符串无法按照指定的字符拆分的话,则需要使用“\”转义,转义的时候两个“\”表示一个“\”。
4、总结
1、使用正则可以方便的完成字符串的验证、拆分、替换等复杂功能。
2、在开发中一般会直接使用String类中提供好的正则支持,而往往很少直接使用Pattern类或Matcher类。
3、在一些正则应用的时候,对于一些敏感的字符要进行转义操作。
2、在开发中一般会直接使用String类中提供好的正则支持,而往往很少直接使用Pattern类或Matcher类。
3、在一些正则应用的时候,对于一些敏感的字符要进行转义操作。
- Java常用类库--正则表达式(Pattern类、Matcher类)
- Java常用类库--正则表达式(Pattern类、Matcher类)
- java 正则表达式 Pattern类,Matcher类
- java正则表达式Pattern和Matcher类
- 正则表达式 Pattern 、 Matcher类
- java中正则表达式之Pattern类与Matcher类
- java 正则表达式 pattern类 matcher类详解
- JAVA正则表达式:Pattern类与Matcher类详解
- Java正则表达式:Pattern类和Matcher类
- JAVA正则表达式Pattern类和Matcher类
- JAVA正则表达式:Pattern类与Matcher类详解
- JAVA正则表达式:Pattern类与Matcher类详解(转)
- JAVA正则表达式:Pattern类与Matcher类详解(转)
- Java正则表达式:Pattern类和Matcher类
- JAVA正则表达式:Pattern类与Matcher类详解(转)
- java基础--正则表达式:Pattern类与Matcher类详解
- JAVA正则表达式:Pattern类与Matcher类详解(转)
- JAVA正则表达式:Pattern类与Matcher类详解
- [设计模式笔记]三. 行为型模式--25. Visitor模式(访问者)对象行为型模式(二)
- 关于在 iOS 中支持 DLNA
- 博文2—c语言程序
- 开源 免费 java CMS - FreeCMS1.5-职位管理
- 一步一步学编程之Python(一)
- Java常用类库--正则表达式(Pattern类、Matcher类)
- underscore.js学习
- 请问c++中的#include "stdafx.h"是什么意思?
- OBJECT-C复习指南
- 编程的三层境界——器、术、道
- Visual C++ 2008 MFC OFFICE界面创建入门
- 我这只烂鸟。
- linux mysql 安装
- Linux进程通信(2):信号(下)