正则表达式总结

Posted shun-w

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式总结相关的知识,希望对你有一定的参考价值。

正则表达式语法

1.普通字符

字母,数字,汉字,下划线,没有特殊意义的标点符号。匹配与之一样的字符

2.简单的转义字符

换行
制表符
\ 本身
^,$,{,}等等 匹配本身

?3.标准字符集合

能够与多种字符匹配的表达式

注意区分大小写,大写是相反的意思

d 匹配0-9之间的任意一个数字
D 匹配非数字一个字符
w 任意一个字母,数字或者下划线。
W 跟上面相反任意一个除了字母,数字或者下划线以外的符号。
s 匹配任意一个空白字符。如:空格,制表符,换行符等
. 可以匹配任意一个字符(除了换行符)。如果要匹配换行符在内的所有字符,用[sS]

4.自定义字符集合

[]方括号匹配方式,能够匹配方括号中任意一个字符

[abc]表示a或b或c

[ab5@] 匹配"a","b","5"或者"@"中任意一个
[^ab5@] 匹配"a","b","5"或者"@"之外任意一个
[a-k] 匹配“a”到"k"之间任意一个字母
[1-7] 匹配1,2,3,4,5,6,7任意一个。[1-7]=[1234567]
[^1-6A-k] 匹配1到6,A到K之外的任意一个字符

”-“表示简写中间的。

特殊符号如果在中括号中,将失去特殊意义,除了^, -

标准字符集合,除了小数点外,如果被包含在中括号,自定义字符集合将包含该集合。如:

? [d.-+]将匹配:数字,小数点,+,-

5.量词

修饰匹配次数的特殊符号

{n} 表达式重复n次
{m,n} 至少重复m次,至多重复n次
{m,} 至少重复m次
? 相当于{0,1},重复1次或者0次
+ 相当于{1,},重复至少1次
* 相当于{0,},不出现或者重复任意次

例如:

d{6} 匹配连续的6个数字

dd{6} 匹配连续的7位数字,因为量词只能对前面的一个表达式生效

(dd){6} 匹配连续的12个数字。用括号括起来,将前面看成一个表达式


量词匹配默认是贪婪模式(尽可能匹配更多的字符):

如:"d{3,6}"匹配"1234567"中的前6个字符。

非贪婪模式,只需要在后面加一个?

如:"d{3,6}?"匹配"1234567"中的"123"和"456"

6.字符边界

本组标记匹配的不是字符而是位置,符合某种条件的位置

^ 与字符串开始的地方匹配
$ 与字符串结束的地方匹配
 匹配一个单词的边界

如:

"^a"匹配"aabbccaa"中的第一个字符

"a$"匹配"aabbccaa"中的最后一个字符

"a"匹配"aabbccaa"中的第一个字符

"a"匹配"aabbccaa"中的最后一个字符

"aa"匹配"aacc aadd aaee"中的所有"aa",匹配的是边界上的都可以

7.正则表达式的匹配模式

  1. 忽略大小写模式
  2. 单行模式:将整个文本看作一个字符串,只有一个开头,一个结尾
  3. 多行模式:每行都看作一个字符串,都有开头和结尾
A 只匹配第一行的第一个
 只匹配最后行最后个

8.选择符和分组

| 匹配符号左边的或者右边的
()捕获组
(?:Expresion)非捕获组

"aa|bb"可以匹配“aa”或者"bb".

小括号。"([a-z]{2})2" 将匹配到的字符重复一遍再匹配

9.预搜索

(?=exp) 断言自身出现的位置的后面能匹配exp
(?<=exp) 断言自身出现的位置前面能出现exp
(?!exp) 断言自身出现的位置的后面不能匹配exp
(?<!exp) 断言自身出现的位置前面不能出现exp

"[a-z]+(?=ing)" 匹配以"ing"结尾的字符串。如"eating"中的"eat",但是不包含"ing"

"[a-z]+(?=d)"匹配所有以数字结尾的单词

10.MySql中like模糊查询

在 where like 的条件查询中,SQL 提供了四种匹配方式(不是正则)。

1. %:表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
2. _:表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。
3. []:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
4. [^]:表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
5. 查询内容包含通配符时,由于通配符的缘故,导致我们查询特殊字符 “%”、“_”、“[” 的语句无法正常实现,而把特殊字符用 “[ ]” 括起便可正常查询。

以上是关于正则表达式总结的主要内容,如果未能解决你的问题,请参考以下文章

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

js正则表达式总结

复习总结正则表达式-上