正则表达基本
正则表达式是Java提供的一种专门用于字符串执行模式匹配的技术。
正则表达式:
regular expression=>RegExp
代码演示
public static void main(String[] args) {
// 定义一个字符串变量,并初始化为 "123abc"
String content = "123abc";
// 定义一个字符串变量,表示要匹配的正则表达式
// 此表达式要求字符串以至少一个数字开头,后跟任意个小写字母
String regstr = "[0-9]+[a-z]*";
// 使用 Pattern 类的 compile 方法编译正则表达式
Pattern pattern = Pattern.compile(regstr);
// 使用 Matcher 类的 matcher 方法创建匹配器对象,并将其与 content 进行匹配
Matcher matcher = pattern.matcher(content);
// 使用 while 循环遍历匹配结果
while (matcher.find()) {
// 输出匹配到的内容
System.out.println("=" + matcher.group(0));
}
}
正则表达语法
想灵活的运用正则表达式,则必须了解其各种元字符的功能,元字符从功能上大致分为:限定符、选择匹配符、分组组合和反向引用符、特殊字符、字符匹配符、定位符
转义号 \\
在正则表达式中,有一些特殊字符具有特定的含义和功能。当需要在正则表达式中使用这些特殊字符本身的字面意义时,需要使用转义符号 \\
符号 | 符号含义 |
---|---|
\\. | 匹配 . 本身 |
\\* | 匹配 * 本身 |
\\+ | 匹配 + 本身 |
\\( \\) | 匹配 () 本身 |
\\$ | 匹配 $ 本身 |
\\ / | 匹配 / 本身 |
\\ | 匹配 \ 本身,字符串中表示一个反斜杠 |
\\? | 匹配 ? 本身 |
\\[ \\] | 匹配 [ ] 本身 |
\\^ | 匹配 ^ 本身 |
\\{ \\} | 匹配 {} 本身 |
注意:在Java的正则表达式中,两个 \\ 代表其他语言中的一个 \
字符匹配
符号 | 符号含义 | 示例 | 解释 |
---|---|---|---|
[ ] | 可接收的字符列表 | [efgh] | e、f、g、h中的任意1个字符 |
[^] | 不接收的字符列表 | [ ^abc] | 除a、b、c之外的任意1个字符,包括数字和特殊符号 |
- | 连字符 | A-Z | 任意单个大写字母 |
. | 匹配除 \n 以外的任何字符 | a…b | 以a开头,b结尾,中间包括2个任意字符的长度为4的字符串 |
\\d | 匹配单个数字字符,相当于[0-9] | \\d{3}(\\d)? | 包含3个或4个数字的字符串 |
\\D | 匹配单个非数字字符,相当于 [ ^ 0-9] | \\D(\\d)* | 以单个非数字字符开头,后接任意个数字字符串 |
\\w | 匹配单个数字、大小写字母字符,相当于[0-9a-zA-Z) | \\d{3}\\w{4} | 以3个数字字符开头的长度为7的数字字母字符串 |
\\W | 匹配单个非数字、大小写字母字符,相当于[ ^0-9a-zA-Z] | \\W+\\d{2} | 以至少1个非数字字母字符开头,2个数字字符结尾的字符串 |
选择匹配符
在匹配某个字符串时需要选择,即:既可以匹配这个,又可以匹配那个,这时需
要用到选择匹配符号 |
符号 | 符号含义 | 示例 | 解释 |
---|---|---|---|
| | 匹配“|”之前或之后的表达式 | ab|cd | 匹配ab或者cd |
限定符
用于指定其前面的字符和组合项连续出现多少次
符号 | 符号含义 | 示例 | 解释 |
---|---|---|---|
* | 指定字符重复0次或n次(无要求)零到多次 | (abc)* | 仅包含任意个abc的字符串,等效于\w* |
+ | 指定字符重复1次或n次(至少一次)1到多 | m+(abc)* | 以至少1个m开头,后接任意个abc的字符串 |
? | 指定字符重复0次或1次(最多一次)0到1 | m+abc? | 以至少1个m开头,后接abc或ab的字符串 |
{n} | 只能输入n个字符 | [abcd]{3} | 匹配由abcd中字母组成的任意长度为3的字符串 |
{n,} | 指定至少n个匹配 | [abcd]{3,} | 匹配由abcd中字母组成的任意长度不小于3的字符串 |
{n,m} | 指定至少n个但不多于m |