正则表达式常用元字符:(简单易懂)

什么是正则表达式?
简单地说,正则表达式是一些用来匹配和处理文本的字符串。
请注意:语法是正则表达式最容易掌握地部分,真正的挑战在于如何运用语法,
              如何把实际问题分解为可由正则表达式解决的子问题。
只靠读书是学不会正则表达式的,实践出真知。

元字符 “ \ ”:
\ 是一个元字符,表示“这个字符有特殊含义,代表的不是字符本身”
\\符号说明:在我们使用正则表达式去检索某些特殊字符的时候,需要用到
                    转义符号,否则检索不到结果,甚至是会报错的。
  在Java的正则表达式中,两个\\代表其他语言中的一个\。
  例如 \. 表示匹配.字符本身
 
注意: 在java的正则表达式中 [.] 中括号中的点就表示匹配点本身

元字符

说明

.

匹配除 \n 以外的任何字符

[  ]

匹配该字符集合中的一个字符

[^]

排除该字符集合中的一个字符

-

定义一个范围,例如[A-Z]

\\d

匹配 0-9 之间的任意数字字符

\\D

匹配非数字字符

\\w

匹配任意字母数字字符(不区分大小写)或下划线字符

\\W(大写)

匹配任意非字母数字字符或下划线字符

\\s

匹配任意空白字符

\\S(大写)

匹配任意非空白字符

|

选择匹配符,匹配“ | ”之前或“ | ”之后的表达式,如:a|b,匹配a或b

*(贪婪匹配)

匹配0次或任意多次

+(贪婪匹配)

匹配1次或任意多次

?(贪婪匹配)

匹配0次或1次

{n}

匹配前一个字符(子表达式)至少出现n次

{n,}

匹配前一个字符(子表达式)至少出现n次或更多次

{n,m}

匹配前一个字符(子表达式)至少出现n次,至多出现m次

贪婪匹配

Java的贪婪匹配默认会匹配多的,如果想尽可能的匹配少的就使用懒惰匹配

懒惰匹配

懒惰匹配的写法是在贪婪匹配的后面加上一个?。例如:*? 、+?、{n,}?

^

指定起始字符

$

指定结束字符

\\b

匹配单词边界(开头或结尾以及空格)

\\B

\\b的反义

(pattern)   

分组捕获,非命名捕获,匹配 pattern 并捕获该匹配的子表达式。

(?<name>pattenn)

分组捕获,命名捕获,将匹配到的字符串捕获到一个组名称或编号名称中。

(?:patten)

非分组捕获,匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用"or"字符 (|) 组合模式部件的情况很有用。

如,'industr(?:y|ies)' 是比 ‘industry|industries’ 更经济的表达式。

(?=patten)

非分组捕获,执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 pattern 的字符串的起始点的字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。

例如,‘Windows (?=95|98|NT|2000)’ 匹配"Windows 2000"中的"Windows",但不匹配"Windows 3.1"中的"Windows"。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。

(?!patten)

非分组捕获,执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。

例如,‘Windows (?!95|98|NT|2000)’ 匹配"Windows 3.1"中的 “Windows”,但不匹配"Windows 2000"中的"Windows"。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。

\\1

反向引用,圆括号的内容被捕获以后,可以在这个括号后被使用。

\\1匹配第一个子表达式,\\2匹配第二个子表达式,以此类推。

内部引用使用\\分组号,例如:\\1 , \\2

外部引用使用$分组号,例如: $1 ,  $2

比如匹配两个连续的数字就可以使用反向引用: (\\d)\\1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值