正则表达式的基本使用
发布时间:2020-12-14 01:30:27 所属栏目:百科 来源:网络整理
导读:基础 正则表达式可以用来对符合某些特征的字符串进行检索、选择、编辑、验证。它的适用性非常广泛,许多编程语言都在语言级别或者类库中提供对正则表达式的支持,除此之外许多文本检索工具都支持使用正则表达式,我们在使用git进行过滤文件时也能看到它的身
基础
正则表达式可以用来对符合某些特征的字符串进行检索、选择、编辑、验证。它的适用性非常广泛,许多编程语言都在语言级别或者类库中提供对正则表达式的支持,除此之外许多文本检索工具都支持使用正则表达式,我们在使用git进行过滤文件时也能看到它的身影.....
一个简单例子,试编程判断一个字符串是否全部由数字组成。
传统判断方式:
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("不是由数字组成!") ; } } }; 正则表达式的基本语法
提醒: 在java的正则表达式中,除了换行和制表符之类的东西只需要直接使用单反斜线 :nt 之外,其他在遇到 的时候,需要对其进行转义,比如在使用d 时就必须要使用d,在遇到其他一些歧义的时候,也需要进行转义,例如插入一个普通的反斜线,应该使用\ ,插入一个 | ,则需要使用 | 。
怎么表示任意字符呢 ?
既然s表示空白字符,S表示非空白符,那么[sS] 便能表示一个任意字符,[sS]* 便能表示任意一个字符串。
类似的,[dD]、[wW]、[.n]都可以起到同样的作用。
Pattern、Matcher类
这两个类是正则操作的核心类,都定义在java.util.regex包中。Pattern主要进行正则规范的编写,Matcher类主要用来执行规范,验证一个字符串是否符合其规范。
Pattern的常用方法:
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("日期格式不合法!") ; } } }; String类对正则的支持
日常中,一般使用String中提供的正则支持,而很少使用Pattern和Matcher类。
String中常用的支持正则的方法:
例:
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") ; } } }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |