正则表达式基础

chenloveslife chenloveslife     2022-12-23     635

关键词:

一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列符合某个句法规则的字符串。我们常用正则表达式来处理两种情况,一种是查找特定的信息(搜索),另外一种是查找并编辑特定的信息(替换)。

一、匹配单个字符和一组字符

  1. 匹配单个字符

  (1). 元字符(英文句号)可以匹配任何一个单个的字符(单个的字符、数字、字母、.本身),相当于DOS的?字符和SQL的_字符。

  (2)如果要匹配特殊字符(元字符)就要使用 来对元字符进行转义,例如:. 就匹配了 . 本身。

  2. 匹配一组字符

  (1)元字符[ 和 ] 用来定义一个字符集合,其含义是必须匹配该集合中的字符之一。定义一个字符集合的具体做法有两种:一种是把所有的字符都列出;二是利用元字符-以字符区间的方式给出。

    其中,第一种例如:

    文本:

    na.xls

    sa.xls

    模式:[ns]a.xls

    匹配结果:

    na.xls

    sa.xls  

    第二种例如:

    文本:

    na2.xls

    sa1.xls  

    sa.xls

    模式:[ns]a[0-9].xls

    匹配结果:

    na2.xls

    sa1.xls  

  (2)字符集合还可以用元字符^求非,用^来表明你想对一个字符集进行取非匹配,即除了该集合中的字符,其它字符都可以匹配。

    文本:

    na2.xls

    sa1.xls  

    sa.xls

    模式:[ns]a[^0-9].xls

    匹配结果:

    sa.xls

    注意:^的效果作用于给定字符集合的所有字符或字符区间,而不是仅限于紧跟在^字符后面的哪那一个字符或字符区间,且要置于集合[]中的开头位置。

二、元字符讲解

  前面我们也已经接触到了元字符:. [ ] - ^  。 正则表达式涉及的元字符见博客结尾。

  (1)特殊字符的转义即对元字符的转义,由于正则表达式中对于规定的元字符会进行相应的处理,但是如果想使用元字符本身的符号就要使用转义字符 (反斜杆)作为该字符的前缀了。注意:\\ 匹配 字符。

  (2)空白元字符:

    技术分享图片

     匹配一个“回车加换行”组合, 进行的搜索将匹配两个连续的行尾标签,正是两条记录之间的空白行。

  (3)数字元字符:

    技术分享图片

  (4)字母数字元字符:

    技术分享图片

  (5)空白字符元字符

    技术分享图片

         注意:[]元字符是个特例,不在s的覆盖范围内。

  (6)POSIX字符类

    该字符类是正则表达式的一种简写形式。

    技术分享图片

    注意:这里使用的模式以[[开头,以]]结束(两对方括号)。这是使用POSIX必须的,外层的[和]字符用来定义一个字符集合,内层的[和]字符是POSIX字符类本身的组成部分。

三、重复匹配

  (1)匹配一个或多个字符:

    元字符+是匹配其前面一个字符的一个或多个字符(不匹配零个字符的情况),比如[0-9]匹配任意单个数字,[0-9]+将匹配一个或多个连续的数字。

    注意:在给一个字符集合加上+后缀的时候,必须把+放在这个字符集合外面,比如说,[0-9]+是正确的,[0-9+]则不是,其表示是匹配0123456789+中的任意一个字符。

  (2)匹配零个或多个字符

    元字符*是匹配其前面一个字符的零个或多个字符。

    例子:

      文本:hello, [email protected] is my email address,[email protected]

      模式: w+[w.]*@[w.]+.w+

      结果: [email protected]  [email protected] 

    分析:

      开头的w+负责匹配电子邮箱地址的第一个字符(一个字母数字字符,不包括.字符);[w.]*覅则匹配电子邮箱地址的第一个字符之后,@字符之前的所有字符;[w.]匹配@之后的电子邮箱的域名,包括可能出现的多层域名;.w+匹配地址的后缀名。

    注意:我们没有对字符集合[w.]中的.字符进行转义,尽管如此还是匹配出. ,一般来说,当在字符集合中使用 . 的时候,像 . 和+这样的元字符将被解释为普通字符,不需要被转义。

  (3)匹配零个或多个字符

    元字符?是匹配其前面一个字符的零个或一个字符。

  (4)匹配的重复次数

    重复次数要用和字符来给出,把要重复的字符写在它们前面,重复的次数写在他们之间。

    例如:3意味着其前面前面一个字符必须在原始文本连续出现三次才算一个匹配;2,4意味着该字符最少重复2次,最多重复4次;2,意味着最少重复2次或更多次。

   (5)防止过度匹配

    来看一个例子:

    文本:<B>abc</B> and <B> def</B>

    模式:<[Bb]>.*</[Bb]>

    结果:<B>abc</B> and <B> def</B>

    原本我们想匹配两个<B></B>,可结果却是第一个<B>到最后的</B>。原因是*和+都是“贪婪型”元字符,它们在进行匹配时的行为模式时多多益善的而不是适可而止的,它们会尽量从一段文本的开头一直匹配到这段文本的末尾,而不是从开头匹配到第一个匹配时为止。解决的方法时转换成懒惰型,即在贪婪型元字符后加一个?元字符。

六、位置匹配

  (1)单词边界

    该边界时由限定符指定的单词边界,顾名思义,用来匹配一个单词的开始或结尾。

    文本:the cat scattered

    模式:cat

    结果:cat

    原始文本中,单词cat的前后都有要给空格,而这将与模式cat相匹配(空格是用来分隔单词的字符之一)。

  (2)字符串边界

    定义字符串边界的元字符有两个:一个是用来定义字符串开头的^(放在字符串的开头),另外一个是用来定义字符串结尾的$(放在字符串的结尾)。

七、子表达式

  

 

javascriptregexp正则表达式基础详谈

...来说是最基础的了,而且在博客园中,发表关于讲解正则表达式的技术文章,更是数不胜数,各有各的优点,但是就是这种很基础的东西,如果我们不去真正仔细研究、学习、掌握,而是抱着需要的时候,就去网上找现成的正则... 查看详情

正则表达式理论基础

---恢复内容开始---一.语法正则表达式用来匹配使用,例如,我们使用正则表达式匹配手机号,匹配邮箱,匹配密码等等在ECMAscript中通过RegExp类型来支持正则表达式的,使用下面的语法创建正则表达式:varexpression=/pattern/flags在上... 查看详情

正则表达式基础以及应用

首先是关于正则表达式的基本知识。一:RegExp(regularexpression)对象的创建RegExp构造函数创建了用于将文本与模式相匹配的正则表达式对象。有两种方法创建一个正则表达式对象。(1)文字符号方法/pattern/attributes/ab+c/i;当正则表... 查看详情

perl正则表达式:开篇

想必现在学习perl的人,对基础正则表达式都已经熟悉,所以学习perl正则会很轻松。这里我不打算解释基础正则的内容,而是直接介绍基础正则中不具备的但perl支持的功能。关于基础正则表达式的内容,可参阅基础正则表达式。... 查看详情

基础正则表达式

基础正则表达式:元字符意义 BRE(basicregularexpression)正则表达式实际就是一些特殊字符,赋予了它特定的含义。1)^word           匹配以word开头的内容。vi、vim编辑器里^代表一行的开... 查看详情

正则表达式基础

最近失眠比较厉害,python遇到瓶颈了,所以就翻翻正则表达式,打发时间。。。 1、正则表达式(regularexpression,):简称regex,可以理解为一种工具。2、正则表达式的两种基本用途:搜索(匹配)和替换(匹配并替换)。比... 查看详情

基础正则表达式和扩展正则表达式

基础正则表达式: ^  第1个符号,以什么什么开头  ^m $ 第2个符号,以什么什么结尾 m$  ,还表示空行,或空格,可以用cat -An试一下 ^$第3个符号,空行 什么符号都没有 . 第4个符号,表示任... 查看详情

正则表达式基础知识

正则表达式基础知识一、元字符万物皆有缘,正则也是如此,元字符是构造正则表达式的一种基本的元素,我们首先来记几个常用的元字符:有了元字符,我们就可以利用这些元字符写一些简单的正则表达式了:二、重复限定符... 查看详情

正则表达式基础

利用清明的假期,在宿舍看了两天《精通正则表达式》第三版,说实话,对于一些学IT的人员来说,正则也许就是处理一些身份证验证,非空验证等的问题。当初我也是这么认为,不过,看了这本书之后,才发现那真的只是牛身... 查看详情

正则表达式基础

正则表达式基础1.   Search查找某个字符的位置varstr='abcdef'alert(str.search('a'))   2.Substring  获取子字符串varstr='abcdef'alert(str.substring(2-5))//从字符串中截取2 查看详情

regularexpress正则表达式基础

一.创建一个正则表达式RegExp,有两种方式如下图所示二、 创建一个正则表达式RegExp详述说明1.构造函数//RegExp是js中一个内置的对象,是正则表达式的缩写varexpression=newRegExp(pattern,flags)//flags和直接量语法一致//pattern可以是字符... 查看详情

javascript中正则表达式的基础语法

...选择[9]断言[10]模式[11]优先级[12]局限性前面的话  正则表达式在人们的印象中可能是一堆无法理解的字符,但就是这些符号却实现了字符串的高效操作。通常的情况是,问题本身并不复杂,但没有正则表达式就成了大问题。jav... 查看详情

刨根究底正则表达式之二——正则表达式基础

正则表达式基础 一、正则表达式构成1.正则表达式中的语法元素,从是否具有特殊含义的角度进行分类,可分为下列两大类、共五种语法元素:1)不具有特殊含义的语法元素(1) 字面字符(文本字符):不具有特殊含义的单... 查看详情

正则表达式基础知识

...前在linux中用到三剑客grep、awk、sed等,简单的接触过正则表达式,但是没有深入的了解正则表达式,又一次在python里面接触到正则表达式,所以想着尽量一次攻克正则表达式,所以就将自己学习印记留在此处,供自己复习,同时... 查看详情

正则表达式基础拾穗

Thepatternincludesacaret(^)andadollarsign($).Theseareregularexpressioncharactersthathaveaspecialmeaning: thecaretmeans“requirethatthepatternmatchesthestartofthestring,”andthedollarsignmeans“requi 查看详情

markdown正则表达式基础(代码片段)

查看详情

基础正则表达式学习笔记

正则表达式:是一类字符所书写出的模式(pattern)元字符:不表示字符本身的意义,用于额外功能性的描述。分为基本正则表达式和扩展正则表达式基本正则表达式的元字符:字符匹配:.:任意单个字符[]:指定范围内的任意单... 查看详情

正则表达式基础

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。给定一个正则表达式和... 查看详情