正则表达式,又称规则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

引用文章正则表达式_百度百科 (baidu.com)

这里就从浅入深一步一个脚印开始探索正则表达式

限定符

限定符是指限定一个字符,通过限定符可以匹配字符出现的数量,这里列举出限定符

  1. ?

    • 指出现0次或者一次

    • 列举:ad? 意思为d出现0次或者1次,可有可无

  2. *

    • 匹配出现0个或【多】个字符

    • 列举:ad*c 意思为b可以没有,也可以出现多次

  3. +

    • 匹配出现1次以上的字符

  4. {}

    • 匹配出现字符次数

    • 列举:ad{2}c 意思为出现2次b;ab{2,6}c 意思为出现2到6次b;ab{2,}c 意思为出现2次以上b

“或”运算器

a (cat|dog) 匹配:a cat,a dog。|表示或

字符类

  1. [a-z]

    • 匹配所有小写英语字符

  2. [a-zA-Z]

    • 匹配所有英语字符

  3. [a-zA-Z0-9]

    • 匹配所有英语字符和数字

  4. ^

    • 匹配除^以后的字符

    • 列举:\[^0-9] 匹配所有的非数字字符(包括换行符)

元字符

  1. \d 代表数字字符

  2. \w 代表单词字符(英文,数字以及下划线)

  3. \s 代表空白符(包括Tab和换行符)

  4. \D 代表非数字字符

  5. \W 代表非单词字符

  6. \S 代表非空白符

  7. \b 代表单词的开始或结束

  8. ^ 代表行首

  9. $ 代表行尾

  10. . 任意字符(不包含Tab)

贪婪与懒惰匹配

  1. <.+>匹配<>前尽可能多的字符,为贪婪匹配

  2. <.+?> 加上后将贪婪匹配转换为懒惰匹配

先、后行断言

这里先引入笔者一个叫"丢弃匹配"的概念。

丢弃匹配,指的是匹配到了,但是会被丢弃,不被引用。比如说匹配1pt,当只需要1时,pt就是被丢弃的部分,但是也需要被匹配到,所以pt就是丢弃匹配字符串

先行断言,指的是匹配字符串在前丢弃匹配字符串在后的匹配方法。比如说匹配1px,当只需要1时,px作为丢弃匹配字符串在1后面。先行断言匹配有两种形式:

  • 正向先行断言:匹配对应丢弃匹配字符串的部分,匹配表达式为:(?=),例子:\d(?=px)

  • 负向先行断言:匹配对应丢弃匹配字符串以外的部分,匹配表达式为:(?!),例子:\d(?!px)

后行断言,指的是匹配字符串在后丢弃匹配字符串在前的匹配方法。比如说匹配px1,当只需要1时,px作为丢弃匹配字符串在1前面。后行断言匹配有两种形式

  • 正向后行断言:匹配对应丢弃匹配字符串的部分,匹配表达式为:(?<=),例子:(?<=px)\d

  • 负向后行断言:匹配对应丢弃匹配字符串以外的部分,匹配表达式为:(?<!),例子:(?<!px)\d

文章作者: Vsoapmac
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 soap的会员制餐厅
前端 后端 算法
喜欢就支持一下吧