Java:正则表达式

正则表达式(regular expression)

正则表达式(regular expression,简写为regex)是一个字符串,用来描述匹配-一个字符串集合的模式。对于字符串处理来说,正则表达式是一个强大的工具。可以使用正则表达式来匹配、替换和拆分字符串。Java的正则表达式是由java.util.regex的Pattern和Matcher类实现的。 

import java.util.regex.Matcher;
import java.util.regex.Pattern;

匹配字符串

用法:string.matches(pattern)返回boolean类型。

String类中的matches方法类似equals方法。例如,以下两个语句结果都为true。

"Java" .matches("Java");
"Java" . equals("Java");


正则表达式语法

正则表达式由字面值字符和特殊符号组成。表H-1列出了正则表达式常用的语法。

注意:

◇在其他语言中,\\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。

在 Java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。需要使用\\来表示\。
◇空白字符是' '、'\t'、'\n'、'\r',或者'\f'。因此, \s和[\t\n\r\f]等同,\S和[^ \t\n\r\f]等同。

◇单词字符是任何的字母、数字或者下划线字符。因此\w等同于 [a-z[A-Z][0-9]_]或者简化为 [A-Za-z0-9_]。\W等同于[^A-Za-z0-9]。

◇表H-1中后面六个条目*、+、?、{n}、{n, }以及{n,m}称为量词符 (quantifier),用于确定量词符前面的模式会重复多少次。例如,A*匹配0或者多个A,A+匹配1或者多个A,A?匹配0或者1个A。A{3} 精确匹配 AAA,A{3, },匹配至少3个A, A{3,6}匹配3到6之间个A。*等同于 {0, },+等同于{1, },?等同于{0,1}。

◇不要在重复量词符中使用空白。例如,A{3,6}不能写成逗号后面有一个空白符的A{3, 6}。

◇可以使用括号来将模式进行分组。例如,(ab){3}匹配ababab,但是ab{3}匹配abbb。

替换和拆分字符串

如果字符串匹配正则表达式,String类的matches方法返回true。string类也包含replaceAll,replaceFirst和split方法,用于替换和拆分字符串。

replaceAll方法替换所有匹配的子字符串,replaceFirst方法替换第一个匹配的子字符串。

System . out . println("Java Java Java" . rep1aceA11("v\\w", "wi"));
>>>Jawi Jawi Jawi
System . out . print1n("Java Java Java" . replaceFirst("v\\w", "wi"));
>>>Jawi Java Java

将字符串"Java1HTML2Per1"拆分为Java、HTML 以及Per1并且保存在tokens[0], tokens[1]以及tokens[2]

String[] tokens = "JavalHTML2Per1" . split("\\d");

其他应用

1、合法E-mail地址:必须包含一个并且只有一个符号“@”,不允许出现“@.”或者.@,允许“@”前的字符中出现“+”,不允许“+”在最前面,或者“+@”

正则表达式:^(\w+((-\w+)|(.\w+)))+\w+((-\w+)|(.\w+))@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$

2、社会安全号的模式是 xxx-xx-xxxx,其中x是一位数字,正则表达式: [\\d]{3}-[\\d]{2}-[\\d]{4}  

3、偶数:[\\d]*[02468]   
4、电话号码(xxx)xxx-xxxx 第一位数字不能为0 :\\([1-9][\\d]{2}\\)[\\d]{3}-[\\d]{4}
5、假定姓由最多25个字母组成,并且第一个字母为大写形式,正则表达式(姓的模式):  [A-Z][a-zA-Z]{1,24}   
6、标识符:以字母、下划线或美元符号开始,不以数字开头,由字母、数字、下划线和美元符号组成。正则表达式:[a-zA-Z_$][\\w$]*

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值