博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式
阅读量:5171 次
发布时间:2019-06-13

本文共 1617 字,大约阅读时间需要 5 分钟。

一、正则表达式

正则表达式描述了一种字符串的匹配模式。在我们学过的数据结构中,与子串的模式匹配有些內似。只不过可进行模糊匹配,功能非常强大。

二、语法

  一个正则表达式就是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

  语法:

      /匹配对象的模式/ 其中,位于 “/” 定界符之间的部分就是将要在目标对象中进行匹配的模式。

     用户只要把希望查找匹配对象的模式内容放入“/”定界符之间即可。 例如,在字符串“abcd”中查找匹配模式bc,代码如下: /bc/

  下面的列出了在正则表达式中能够使用的字符列表及相关描述。

  

  

  

  注意的几点:

  (1)特殊字符转义:当我们匹配的内容里有(. + * ? \等等),需要在使用的前面加“\”表示。

                 

  (2)贪婪匹配与非贪婪匹配: 默认情况下,正则表达式使用最长匹配原则,即贪婪匹配原则。

     例如,要将“sssstress”中匹配“s+"  则默认尽可能让一个单元包含更多的字符。

             

     如果要匹配最短的。当字符“s+”紧跟任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式变成使用最短匹配原则,即非贪婪匹配原则。

        

三、String对象中的模式匹配

  1.match()    使用正则表达式模式对字符串进行查找,并将查找的结果作为数组返回,如果没有找到,则返回null。

                

  2.search()   返回正则表达式查找内容的第一个子串的位置,若没有找到,返回-1。

                     返回结果是:4

  3.replace()  先使用表达式模式对字符串进行搜索,再对搜索到的内容用自己指定的字符串进行替换。它返回的是一个字符串对象。

                                    

  4.split()   按照自定义分割标识符把一个字符串拆分成若干个子串,返回的是数组。

                                      

四、RexExp对象

  每一条正则表达式模式对应一个RegExp实例,有两种方式可以创建RegExp对象的实例。

  使用RegExp的显式构造函数

    语法: new RegExp("pattern"[,"flags"])           //即 new RegExp(" 模式 "[," 标记 "])

  使用RegExp的隐式构造函数,采用纯文本格式

    语法: /pattern/[flags] pattern部分为要使用的正则表达式模式文本,是必须的。

  在第一种方式中,pattern部分以JavaScript字符串的形式存在,需要使用双引号或单引号括起来;

  在第二种方式中,pattern部分嵌套在两个“/”之间,不能使用引号。 flags部分设置正则表达式的标志信息,是可选项。

 

                               

  RegExp对象的方法

   (1) rgExp.exec(str) 

      在"待查找的完整字符串"中,依次查找每个符合rgExp要求的关键词。返回值是本次找到的一个关键词及其位置。

      参数说明: rgExp:必选项。包含正则表达式模式和可用标志的正则表达式对象。 Str:必选项。要在其中执行查找的String对象或字符串文字。

                                                

         (2) rgexp.test(str) 

     检查字符串是否完全符合正则表达式的要求。

        参数说明: rgexp:必选项。包含正则表达式模式或可用标志的正则表达式对象。 Str:必选项。要在其上测试查找的字符串。

        只要验证,re中必须前加^后加$

 

   我是小白,写博客也是为了记录每天学习的点滴。我会慢慢改正,感谢纠正。

 

  

 

 

  

  

 

 

 

 

 

 

转载于:https://www.cnblogs.com/ykgo/p/8231817.html

你可能感兴趣的文章
Hero In Maze
查看>>
学习使用autotools
查看>>
166. Fraction to Recurring Decimal
查看>>
redis集群原理
查看>>
Spark基础知识
查看>>
jQuery快速入门
查看>>
《软件需求分析》读书笔记NO.4
查看>>
qt初步---Qt实现软件从Windows到Linux跨平台
查看>>
16.1 Class类与Java反射
查看>>
CentosOS 7: 创建Nginx+Https网站
查看>>
向数据源DataTable 中添加新的一列,并向其赋值
查看>>
(C/C++) Link List - C 語言版本
查看>>
Spring 各种包功能
查看>>
[leedcode 122] Best Time to Buy and Sell Stock II
查看>>
[leedcode 137] Single Number II
查看>>
[转载]如何捕获控制台消息
查看>>
myeclipse激活+Aptana安装配置
查看>>
嵊州D1T1 总统先生,一路走好!
查看>>
Python字符串图解
查看>>
[家里蹲大学数学杂志]第270期张恭庆编《泛函分析讲义》2.5节以前的习题参考解答...
查看>>