Java:正则表达式:基础语法,Matcher 对象的方法 lookingAt()、matches()、find()和groupCount()

一、正则表达式基础语法(Regular Expression)

1、正则表达式的创建方式:Pattern.compile(“正则表达式”).matcher(“被检验的字符串”)

伪代码

Pattern p = Pattern.compile(regex);
// Pattern p = Pattern.compile("正则表达式");
Matcher m = p.matcher(input);
// Matcher m = p.matcher(“被检验的字符串”);

2、分组()和分隔|

(1)| 用于分割可供选择的字符,要与 ( ) 搭配使用,存在优先匹配:从左到右(从繁到简)。注意与 [ ] 搭配,就是他本身 |,不代表分割。

如 [ab|cd],既可以匹配 ab 也可以匹配 cd。
选择项的尝试匹配次序是左——>右,因此,[a | ab]中当a匹配之后,就不匹配 ab 了,即使 ab 更优。所以书写顺序应该是从繁到简。

(2)() 分组,作用1:把一部分作为整体;作用2:定义子模式方便后面引用

作为整体,加上重复次数,如

String regex = "(\\D\\s)+";

效果相同

3、\转译^$.*+?=|!/:{}()[] 、字符类、重复次数、位置锚点、修饰符

(1)特殊字符,^$.*+?=|!/:{}()[] 需要\转译

\o \t \n \v \f \r
^$.*+?=|!/:{}()[] \需要\转译

(2)字符类,[\w\W\s\S\d\D]

符号意义
[...]字符集。匹配包含的任何字符
[^...]反向字符集。匹配未包含的任何字符
[a-b]字符范围。匹配包含的任一字符集
[^a-b]反向范围字符。匹配不在指定范围内的任何字符
.任意字符
\\w任何ASCII字符组成的单词,等价于[a-zA-Z0-9]
\\W任何不适ASCII字符组成的单词,等价于[^a-zA-Z0-9]
\\s任何Unicode空白符
\\S任何非Unicode空白符的字符,注意\w和\S不一样
\\d任何ASCII数值,等价于[0-9]
\\D任何ASCII数字之外的任何字符,等价于[^0-9]
\\数字数字需要是正整数,到捕获匹配的反向引用

(3)重复次数,?+*{n}{n,}{m,n}

符号意义
?0或1次
+1次或多次
*任意次
{n}n次
{n,}n次或n次以上
{m,n}最少m次,最多n次

正则是贪婪的,在全体满足匹配条件的情况下,尽可能贪婪。

(4)位置锚点,^$\b\B(?=p)(?!p)

符号意义
^匹配字符串的开头,在多行检测中,匹配一行的开头
$匹配字符串的结尾,在多行检测中,匹配一行的结尾
\\b匹配一个单词边界的位置
\\B匹配非单词边界的位置
(?:pattern)匹配pattern但不捕获该匹配的子表达式
(?=pattern)零宽正向先行断言(要求接下来的字符都与p匹配,但不能包含匹配p的那些字符)
(?!pattern)零宽负向先行断言(要求接下来的字符不与p匹配)

二、lookingAt()、matches()、find()

返回对应的布尔值

lookingAt()是从开始位置开始匹配

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
//lookingAt是从开始位置开始匹配
System.out.println(m.lookingAt());

matches()是从开始位置开始匹配

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
//matches方法是将输入和正则表达式模式完全做匹配:
System.out.println(m.matches());

find()是从开始位置开始匹配

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input);
//find是查找是否包含
System.out.println(m.find());
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值