zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java正则表达式

2023-09-14 08:56:50 时间

一、 为啥要用正则表达式

正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串校验、拆分、替换功能。

假设: 现在要求判断一个字符串是否由数字组成,则可以有以下的两种做法:

· 不使用正则完成

· 使用正则表达式

1.1 不使用正则表达式完成数字验证

public static void main(String[] args) {

 String regexStr = "123456789";

 boolean flag = true;

 char[] c = regexStr.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("不是数字组成");

}
上述程序: 先将字符串拆分,然后一个个进行比较、验证, 但是非常麻烦, 而且现在只是验证是否有数字组成,对于更加复杂的数据,验证会更加复杂。

1.2 使用正则验证

public static void main(String[] args) {

 String regexStr = "123456789";

 if (Pattern.compile("[0-9]+").matcher(regexStr).matches()) {

 System.out.println("是数字组成");

 } else {

 System.out.println("不是数字组成");

}
以上的正则验证方式也可以很好的校验数据,且更加方便。


二、使用java的正则表达式

2.1 常用的正则规范


· \d : 表示数字,[0-9]

· \D: 表示非数字,[^0-9]

· \w : 表示字母、数字、下划线,[a-zA-Z0-9]

· \W : [^a-zA-Z0-9]



2.2 Java提供的支持正则的API

· Pattern主要是表示一个规则的意思,即: 正则表达式的规则需要在Pattern类中使用。

· Matcher类主要用于使用Pattern制定好的验证规则。




2.3 正则实例;

2.3.1 验证一个字符串是否是合法的日期格式

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("日期格式不合法!") ;

}
2.3.2 字符串拆分

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") ;

}
2.3.3 字符串替换: 将字符串中全部数字替换成“_”

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) ;

}
三、String类对正则的支持

String类本身提供了对正则的支持:


3.1 简单的String正则

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") ;

}
3.2 复杂的数据拆分

public static void main(String args[]){

 String info = "LXH:98|MLDN:90|LI:100" ; // 定义一个字符串

 // 拆分的形式:

 LXH -- 98

 MLDN -- 90

 LI -- 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]) ;

}


总结:

1. 使用正则可以方便完成字符串的验证、拆分、替换

2. 在开发中可以使用Stirng类提供好的正则支持。

3. 在进行正则验证时,对于一些敏感的字符要进行转义操作。







Java正则表达式匹配aabb、abab格式字符 我们开发过程中,经常用到正则表达式来匹配想要的字符串,或者从一段文本中提取想要的关键字,比如爬虫应用等。正则表达式是对字符串提取的一套规则,我们把这个规则用正则里面的特定语法表达出来,去匹配满足这个规则的字符串。正则表达式具有通用型,不仅java里面可以用,其他的语言也一样适用。
Java正则表达式 正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种【文本模式(Pattern)】。 正则表达式使用单个字符串来描述、匹配具有相同规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式的核心功能就是处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
java正则表达式进阶 当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是 非贪心的 。 非贪心的 模式匹配搜索到的、尽可能短的字符串,而默认的 贪心的 模式匹配搜索到的、尽可能长的字符串。 例如,在字符串 oooo 中, o+? 只匹配单个 o ,而 o+ 匹配所有 o 。
一文学会java正则表达式 1.什么是正则表达式? 在了解正则表达式之前,我们先看几个非常常见的问题: 如何判断字符串是否是有效的电话号码?例如:010-1234567,123ABC456,13510001000等; 如何判断字符串是否是有效的电子邮件地址?例如:test@example.com,test#example等; 如何判断字符串是否是有效的时间?例如:12:34,09:60,99:99等。 一种直观的想法是通过程序判断,这种方法需要为每种用例创建规则,然后用代码实现。 为每一种判断逻辑编写代码实在是太繁琐了。有没有更简单的方法?
Java的正则表达式 这个系列其实没有多少可说的内容了,不过生活总是要继续的,所以一周工作下来,有摸鱼也有忙碌,当然也有一些感慨和思考。