易于遵循,示例清晰:全网最佳学习正则表达式的简单方法

易于遵循,示例清晰:全网最佳学习正则表达式的简单方法

在线正则表达式式测试器:
https://regex101.com/r/E88WE2/1

什么是正则表达式?

正则表达式是一组字符或符号,用于从文本中查找特定的模式。

正则表达式是一种从左到右与主题字符串匹配的模式。“正则表达式”一词令人a目结舌,通常会发现缩写为“ regex”或“ regexp”。正则表达式用于替换字符串中的文本,验证表单,基于模式匹配从字符串中提取子字符串等等。

假设您正在编写应用程序,并且想为用户选择用户名设置规则。我们要允许用户名包含字母,数字,下划线和连字符。我们还希望限制用户名中的字符数,以使其看起来不难看。我们使用以下正则表达式来验证用户名:

易于遵循,示例清晰:全网最佳学习正则表达式的简单方法

上面的正则表达式可以接受字符串john_doe,jo-hn_doe并且john12_as。它不匹配,Jo因为该字符串包含大写字母,并且它太短。

目录

  • 基本匹配器
  • 元字符句号字符集否定字符集重复次数星加号问号大括号人物组轮换转义特殊字符锚点插入符号美元
  • 速记字符集
  • 环视四周积极向前负前瞻正向后看负向后看
  • 标志不区分大小写全球搜寻多行
  • 奖金

1.基本匹配器

正则表达式只是我们用来在文本中执行搜索的字符模式。例如,正则表达式the表示:字母t,后跟字母h,后跟字母e。

“该” =>脂肪猫坐在的垫子。

正则表达式123匹配字符串123。通过将正则表达式中的每个字符与输入字符串中的每个字符相比较,将正则表达式与输入字符串进行匹配。正则表达式通常区分大小写,因此正则表达式The将不匹配string the。

“该” => 的脂肪猫坐在垫子上。

2.元字符

元字符是正则表达式的基础。元字符不代表自己,而是以某些特殊方式解释。一些元字符具有特殊含义,并写在方括号内。元字符如下:

易于遵循,示例清晰:全网最佳学习正则表达式的简单方法

2.1句号

句号.是元字符的最简单示例。元字符.与任何单个字符匹配。它将不匹配返回或换行符。例如,正则表达式的.ar意思是:任何字符,后跟字母a,后跟字母r。

“.ar” =>的车 看齐糟透了在噶尔年龄。

2.2字符集

字符集也称为字符类。方括号用于指定字符集。在字符集内使用连字符指定字符的范围。方括号内字符范围的顺序无关紧要。例如,正则表达式[Tt]he表示:大写T或小写t,后跟字母h,后跟字母e。

“[Tt的]他” => 将车停在该停车库。

但是,字符集内的句点表示原义句点。正则表达式的ar[.]意思是:小写字符a,后跟letter r,后跟句号.。

“ ar [。]” =>车库是停车的好地方。

2.2.1否定字符集

通常,脱字符号表示字符串的开头,但是在方括号中键入时,它会否定字符集。例如,正则表达式的[^c]ar意思是:除之外的任何字符c,其后是该字符a,然后是字母r。

“[^ C] AR”=>该车面值的KED在噶尔年龄。

2.3重复

在元字符之后+,*或?用于指定子模式可以出现多少次。这些元字符在不同情况下的行为不同。

2.3.1星星

该符号*与前面的匹配项的零个或多个重复匹配。正则表达式的a*意思是:零个或多个前面小写字符的重复a。但是,如果它出现在字符集或类之后,那么它将找到整个字符集的重复项。例如,正则表达式的[a-z]*意思是:连续任意数量的小写字母。

“[AZ] *”=> T 他 车 停放 在 所述 车库#21。

该*符号可与元字符.一起使用,以匹配任何字符串.*。该*符号可与空白字符\s一起使用,以匹配一串空白字符。例如,该表达式的\s*cat\s*意思是:零个或多个空格,后跟小写字符c,其次是小写字符a,然后是小写字符t,然后是零个或多个空格。

“\ S *猫\ S *”=>脂肪猫坐在CON 猫耳突。

2.3.2加号

该符号+与前一个字符的一个或多个重复匹配。例如,正则表达式的c.+t意思是:小写字母c,后跟至少一个字符,后跟小写字符t。需要澄清的t是,这是t句子中的最后一个。

“ c。+ t” =>肥猫坐在垫子上。

2.3.3问号

在正则表达式中,元字符?使前面的字符成为可选字符。该符号与前一个字符的零个或一个实例匹配。例如,正则表达式的[T]?he意思是:可选的大写字母T,后跟小写字符h,再跟小写字符e。

“[T]他” => 的汽车停放在车库里。
“[T]?他” => 的汽车停放在吨他车库。

2.4大括号

在正则表达式中,括号(也称为量词)用于指定一个字符或一组字符可以重复的次数。例如,正则表达式的[0-9]{2,3}意思是:匹配至少2位但不超过3位(0到9范围内的字符)。

“ [0-9] {2,3}” =>数字为9。999 7,但我们将其四舍五入为10 .0。

我们可以省略第二个数字。例如,正则表达式[0-9]{2,}表示:匹配2个或更多数字。如果我们也删除逗号,则正则表达式的[0-9]{3}意思是:精确匹配3位数字。

“ [0-9] {2,}” =>数字为9。9997,但我们将其四舍五入为10 .0。
“ [0-9] {3}” =>数字为9。999 7,但我们将其四舍五入为10.0。

2.5字符组

字符组是写在括号内的一组子模式(...)。正如我们之前在正则表达式中所讨论的,如果我们在一个字符之后放置一个量词,那么它将重复前面的字符。但是,如果我们将量词放在一个字符组之后,那么它将重复整个字符组。例如,正则表达式(ab)*匹配字符“ ab”的零个或多个重复。我们还可以|在字符组中使用替代元字符。例如,正则表达式的(c|g|p)ar意思是:小写字符c,g或p,后跟character a,后跟character r。

“(C | G | p)的AR”=>的汽车是不相上下的KED在噶尔年龄。

2.6交替

在正则表达式中,竖线|用于定义交替。交替就像多个表达式之间的条件。现在,您可能会认为字符集和替换的工作方式相同。但是字符集和替换之间的最大区别在于,字符集在字符级别上起作用,而替换在表达式级别上起作用。例如,正则表达式的(T|t)he|car意思是:大写字母T或小写字母t,其次是小写字母h,然后是小写字母e或小写字母c,再是小写字母a,再是小写字母r。

“(T | t)的他|车” => 的 汽车停放在该停车库。

2.7转义特殊字符

\正则表达式中使用反斜杠来转义下一个字符。这允许将符号指定为包含保留字符的匹配字符{ } [ ] / \ + * . $ ^ | ?。要将特殊字符用作匹配字符放在前面\。例如,正则表达式.用于匹配除换行符以外的任何字符。现在要匹配.输入字符串,正则表达式的(f|c|m)at\.?意思是:小写字母f,c或m,后跟小写字母a,再跟小写字母t,再跟可选.字符。

“(f | c | m)at \。?” =>的脂肪 猫坐在垫子。

2.8锚

在正则表达式中,我们使用锚点来检查匹配的符号是输入字符串的开始符号还是结束符号。锚有两种类型:第一种类型是Caret ^,它检查匹配的字符是否是输入的起始字符;第二种类型是Dollar $,它检查匹配的字符是否是输入字符串的最后一个字符。

2.8.1插入符号

脱字^符号用于检查匹配字符是否为输入字符串的第一个字符。如果我们将以下正则表达式^a(如果a是起始符号)应用于输入字符串,abc则它匹配a。但是,如果我们^b对上述输入字符串应用正则表达式,则它不匹配任何内容。因为在输入字符串中,abc“ b”不是起始符号。让我们看一下另一个正则表达式^(T|t)he,它表示:大写字符T或小写字符t是输入字符串的开始符号,其后是小写字符h,再是小写字符e。

“(T | t)的他” => 的汽车停放在该停车库。
“^(T | t)的他”=> 的汽车停放在车库里。

2.8.2美元

美元$符号用于检查匹配字符是否为输入字符串的最后一个字符。例如,正则表达式(at\.)$表示:小写字符a,后跟小写字符t,后跟一个.字符,匹配器必须在字符串的结尾。

“(at \。)” =>脂肪c 。ŝ 的。在米。
“(at \。)$” =>肥猫。坐着 在米。

3.速记字符集

正则表达式为常用字符集提供了简写,而后者为常用正则表达式提供了方便的简写。速记字符集如下:

速记描述。除换行外的任何字符\ w匹配字母数字字符: [a-zA-Z0-9_]\ W匹配非字母数字字符: [^\w]\ d匹配数字: [0-9]\ D匹配非数字: [^\d]\ s匹配空白字符: [\t\n\f\r\p{Z}]\ S匹配非空格字符: [^\s]

4.环顾四周

向后看和向前看有时称为环视,是非捕获组的特定类型(用于匹配模式,但不包括在匹配列表中)。当我们具有该模式在另一个特定模式之前或之后的条件时,将使用前行。例如,我们$要从下面的输入字符串中获取所有以字符开头的数字$4.44 and $10.88。我们将使用以下正则表达式(?<=\$)[0-9\.]*,这意味着:获取所有包含.字符并以$字符开头的数字。以下是在正则表达式中使用的环顾:

符号描述?=积极向前?!负前瞻?<=正向后看?<!负向后看

4.1积极向前

正向超前断言,表达式的第一部分必须后跟超前表达式。返回的匹配项仅包含与表达式的第一部分匹配的文本。为了定义正向,使用括号。在这些括号内,使用等号问号,如下所示:(?=...)。先行表达式写在括号内的等号之后。例如,正则表达式的[T|t]he(?=\sfat)意思是:可选地匹配小写字母t或大写字母T,然后是letter h,然后是letter e。在括号中,我们定义了正向前行,它告诉正则表达式引擎匹配The或the后面跟有单词fat。

“[T | T]他(?= \ SFAT)”=> 的脂肪猫坐在垫子上。

4.2负前瞻

当我们需要从输入字符串中获取所有不带模式的匹配项时,使用负向超前。负前瞻的定义与我们定义正前瞻的定义相同,但唯一的区别是,=我们使用否定!字符代替等号,即(?!...)。让我们看一下以下正则表达式[T|t]he(?!\sfat),这意味着:从 输入字符串中获取所有The或the单词,这些单词后不fat带空格的单词。

“|(?!\ SFAT)[T T]他”=>肥猫坐在了垫子上。

4.3正向后看

正向后查找用于获取所有以特定模式开头的匹配项。正向后看用表示(?<=...)。例如,正则表达式的(?<=[T|t]he\s)(fat|mat)意思是:从输入字符串中 获取单词或之后的全部fat或mat单词。Thethe

“(?<= [T | t] he \ s)(fat | mat)” => 肥猫坐在垫子上。

4.4负向后看

负向后搜索用于获取所有未带有特定模式的匹配项。后面的负向表示为(?<!...)。例如,正则表达式的(?<!(T|t)he\s)(cat)意思是:cat从输入字符串中获取所有不在单词The或之后的单词the。

“(?<![T | t] he \ s)(cat)” =>猫坐在cat上。

5.标志

标志也称为修饰符,因为它们会修改正则表达式的输出。这些标志可以以任何顺序或组合使用,并且是RegExp的组成部分。

旗描述一世不区分大小写:将匹配设置为不区分大小写。G全局搜索:在整个输入字符串中搜索模式。米多行:锚元字符在每行上起作用。

5.1不区分大小写

所述i改性剂被用于执行不区分大小写匹配。例如,正则表达式的/The/gi意思是:大写字母T,后跟小写字符h,后跟character e。并且在正则表达式的末尾,该i标志告诉正则表达式引擎忽略大小写。如您所见,我们还提供了gflag,因为我们想在整个输入字符串中搜索模式。

“该” => 的脂肪猫坐在垫子上。
“/该/ GI” => 的脂肪猫坐在的垫子。

5.2全局搜索

该g修改器用于执行全局匹配(查找所有的比赛,而不是第一场比赛后停止)。例如,正则表达式的/.(at)/g意思是:除换行符外的任何字符,后跟小写字符a,再跟小写字符t。因为我们g现在在正则表达式的末尾提供了flag,所以它将从整个输入字符串中查找所有匹配项。

“ /.(at)/” => 肥猫坐在垫子上。
“/.(at)/g” =>的脂肪 猫 坐在上的垫子。

5.3多行

所述m改性剂被用于执行多线的匹配。正如我们前面讨论的,锚点(^, $)用于检查pattern是输入的开始还是输入字符串的结束。但是,如果我们希望锚在每一行上都起作用,则可以使用mflag。例如,正则表达式的/at(.)?$/gm意思是:小写字符a,后跟小写字符t,除了换行符以外的其他任意内容。而且由于m有了标志,正则表达式引擎现在在字符串的每一行末尾匹配模式。

“ /.at(.)?$/” =>胖子
                猫坐
                在垫子上。
“/.at(.)?$/gm” =>的脂肪 
                  猫坐在 
                  上的垫子。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值