定义
正则表达式(regular expression,简写为regex )是一个字符串,用来描述匹配一个字符串集合的模式。可以使用正则表达式来匹配、替换和拆分字符串。
正则表达式的用法
2.1限定符
? | 匹配0次或1次出现 |
* | 匹配0次或多次出现 |
+ | 匹配1次或多次出现 |
{n} | 匹配正好n次出现 |
{n,m} | 匹配n到m(不包含)次出现 |
{n,} | 匹配至少n次出现 |
当限定符的对象是多个字符的重复,使用()+限定符。
2.2 或运算
正则表达式 | 匹配 | 示例 |
(ab|cd) | ab或cd | ten匹配t(en|im) |
2.3 字符类
正则表达式 | 匹配 |
[abc]+ | 由abc这几个字母构成的单词 |
[a-z]+ | 所有的小写英文字符 |
[a-zA-Z]+ | 所有的英文字符 |
[a-zA-Z0-9]+ | 所有的英文字符和数字 |
[^0-9]+ | 所有的非数字字符 |
在方括号中的前面写一个脱字符(^),则代表要求匹配除了^后面列出的[]中以外的字符。
2.4 元字符
正则表达式中已经预先定义好了一系列常用的字符类型,比如数字、空白符、单词开头、结尾等等,它们被称作元字符。
正则表达式中的大多数元字符都以反斜杠开头。
\d | 数字字符 |
\w | 单词字符(英文、数字、下划线) |
\s | 空白符(包含Tab和换行符) |
\D | 非数字字符 |
\W | 非单词字符 |
\S | 非空白字符 |
. | 任意字符除换行符 |
^a | 匹配行首的a |
a$ | 匹配行尾的a |
2.5 贪婪与懒惰匹配
贪婪匹配:正则表达式中包含重复的限定符时,通常的行为是匹配尽可能多的字符
懒惰匹配:匹配尽可能少的字符。
默认情况下所有的量词符都是“贪婪”的。这意味着它们会尽可能匹配最多次。
比如,下面语句显示JRvaa。因为第一个匹配成功的是aaa。
可以通过在后面添加问号(?)来改变量词符的默认行为。
比如,下面的语句显示JRaavaa,因为第一个匹配成功的是a。
替换和拆分字符串
String类也包含replaceAll、replaceFirst和split方法,用于替换和拆分字符串。如图:
3.1 替换
replaceAll方法匹配所有匹配的子字符串,replaceFirst方法替换第一个匹配的子字符串。例如,下面代码
显示
下面代码
显示
3.2 拆分
有两个重载的split方法:
- split(regex)方法使用匹配的分隔符将一个字符串拆分为子字符串。
例如,以下语句
将字符串“JavaHTML2Per1”拆分为Java、HTML以及Per1并且保存在tokens[0],tokens[1]以及tokens[2]中。
2.在split(regex,limit)方法中,limit参数确定模式匹配多少次。如果limit<=0,split(regex,limit)等同于split(regex)。如果limit>0,模式最多匹配limit-1次。示例: