Java-正则表达式

Java-正则表达式

1 作用

正则表达式定义了字符串的模式

正则表达式可以用来搜索、编辑或处理文本

2 语法

元字符描述
\将下一个字符标记符、或一个向后引用、或一个八进制转义符。
^匹配输入字符串的开始位置
$匹配输入字符串的结束位置
*匹配前面的子表达式任意次
+匹配前面的子表达式一次或多次(大于等于1次)
?匹配前面的子表达式零次或一次
{n}n是一个非负整数。匹配确定的n次
{n,}n是一个非负整数。至少匹配n次
{n,m}m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次
.点匹配除“\r\n”之外的任何单个字符
x|y匹配x或y
[xyz]字符集合。匹配所包含的任意一个字符
[^xyz]负值字符集合。匹配未包含的任意字符
[a-z]字符范围。匹配指定范围内的任意字符
[^a-z]负值字符范围。匹配任何不在指定范围内的任意字符
\b匹配一个单词边界,也就是指单词和空格间的位置
\B匹配非单词边界
\d匹配一个数字字符。等价于[0-9]。
\D匹配一个非数字字符。等价于[^0-9]。
\f匹配一个换页符
\n匹配一个换行符
\r匹配一个回车符
\s匹配任何不可见字符,包括空格、制表符、换页符等等
\S匹配任何可见字符
\t匹配一个制表符
\w匹配包括下划线的任何单词字符
\W匹配任何非单词字符
\xn匹配n,其中n为十六进制转义值
\num匹配num,其中num是一个正整数
\un匹配n,其中n是一个用四个十六进制数字表示的Unicode字符
< >匹配词(word)的开始(<)和结束(>)
|将两个匹配条件进行逻辑“或”(Or)运算
+匹配1或多个正好在它之前的那个字符
?匹配0或1个正好在它之前的那个字符

注意:

​ Java 源代码的字符串中的反斜线被解释为 Unicode 转义或其他字符转义。因此必须在字符串字面值中使用两个反斜线,表示正则表达式受到保护,不被 Java 字节码编译器解释。

(),[],{}的区别

​ **小括号():**匹配小括号内的字符串,可以是一个,也可以是多个,常跟“|”(或)符号搭配使用,是多选结构的
  示例1:string name = “way2014”; regex:(way|zgw) result:结果是可以匹配出way的,因为是多选结构,小括号是匹配字符串的
  示例2:string text = “123456789”; regex:(0-9) result:结果是什么都匹配不到的,它只匹配字符串"0-9"而不是匹配数字, [0-9]这个字符组才是匹配0-9的数字

​ 中括号[]:匹配字符组内的字符,比如咱们常用的[0-9a-zA-Z.*?!]等,在[]内的字符都是字符,不是元字符,比如“0-9”、“a-z”这中间的“-”就是连接符号,表示范围的元字符,如果写成[-!?(]这样的话,就是普通字符
  示例1: string text = “1234567890”; regex:[0-9] result:结果是可以匹配出字符串text内的任意数字了,像上边的[或符号“|”在字符组内就是一个普通字符
  示例2:string text = “a|e|s|v”; regex:[a|e|s] result:结果就是匹配字符a、e、s三个字符,这个跟(a|e|s)有区别的,区别就是(a|e|s)匹配的是a、e、s三个字符的随意一个,三个 中的任意一个,这里|是元字符

​ **大括号{}:**匹配次数,匹配在它之前表达式匹配出来的元素出现的次数,{n}出现n次、{n,}匹配最少出现n次、{n,m}匹配最少出现n次,最多出现m次

3 Pattern类

​ 用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建
​ 可以通过Pattern.complie(String regex)创建一个正则表达式
​ 只能做一些简单的匹配操作

方法作用
Pattern.matches(regex,input)全匹配字符

4 Matcher类

构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例 Matcher m = p.matcher(“aaaaab”);

支持便捷强大的正则匹配操作,包括分组、多次匹配支持

方法作用
matches()全匹配字符
lookingAt()从头开始匹配字符
find()匹配是否包含字符
start()返回匹配的值的开始位置
end()返回匹配的值的结束位置
group()返回匹配的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值