正则表达式

正则表达式是一种描述字符串匹配的模式,用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

元字符:

常用元字符 含义
. 匹配除换行符意外的任意字符
w 匹配字母、数字、下划线
W 匹配不是字母、不是数字、不是下划线
d 匹配数字相当于[0-9]
D 匹配不是数字的字符
s 匹配不可见字符,包括空格,换行符等
匹配可见字符
 匹配一个词的边界 
匹配一个非单词边界
字符串的开始位置
字符串的结束位置 

表示一个字符全集:/wW/、/dD/、/sS/、/./s 等 

量词:

量词 含义
* 重复任意次数,相当于{0,}
? 重复 0 或 1 次,相当于{0,1}
+ 重复 1 次或更多次,相当于{1,}
{n} 重复 n 次
{n,} 重复 n 次或大于 n 次
{n,m} 重复 n 到 m 次

分支&字符集

  1. (a|b|c)
  2. [abc] == [a-c]
  3. [^abc] == [^a-c]

分组&引用

/(d{4})-(d{2})-(d{2})/

/(d{4})-(d{2})-2/--------------------2相当于(d{2})

/(?<year>d{4})-(?<month>d{2})-(?<day>d{2})/ ------------分组命名,group.year,group.month,group.day

/(?<year>d{4})-(?<month>d{2})-k<month>/-----------------k<>,命名向后引用

 环视

  正向/预测先行/顺序/从左到右/pattern的前面位置 负向/回顾后发/逆序/从右到左/pattern的后面位置
肯定/正 (?=pattern) (?<=pattern)
否定/负 (?!pattern) (?<!pattern)

贪婪&惰性

贪婪——在匹配成功的前提下,尽可能多的匹配

惰性——在匹配成功的前提下,尽可能少的匹配

/.*bbb/g.test('abbbaabbba1234')

/.*?bbb/g.test('abbbaabbba1234')

修饰符&标志

g(表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止)

i(不区分大小写)

m(多行模式)

y(y 修饰符的作用与 g 修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始。不同之处在于,g 修饰符只要剩余位置中存在匹配就可,而 y 修饰符确保匹配必须从剩余的第一个位置开始,这也就是“粘连”的含义)

u(表示按unicode(utf-8)匹配,主要针对多字节比如汉字)

原文地址:https://www.cnblogs.com/Dida-1209/p/10693447.html