城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

学习正则表达式

1月13日 话藏心投稿
  什么是正则表达式?
  正则表达式是一种被用于从文本中检索符合某些特定模式的文本。
  正则表达式是从左到右来匹配一个字符串的。RegularExpression这个词太长了,我们通常使用它的缩写regex或者regexp。
  正则表达式可以被用来替换字符串中的文本、验证表单、基于模式匹配从一个字符串中提取字符串等等。
  想象一下,您正在编写应用程序,并且您希望在用户选择用户名时设置规则。我们希望用户名可以包含字母,数字,下划线和连字符。
  为了让它看起来不丑,我们还想限制用户名中的字符数量。这时我们可以使用以下正则表达式来验证用户名:
  上面这个正则表达式可以匹配johndoe,johndoe和john12as。但是它不能匹配Jo,因为该字符串里面包含大写字符,并且它太短了。1。基本匹配
  正则表达式只是我们用于在文本中检索字符串的模式。例如正则表达式cat,表示:字母c后面跟着一个字母a,再后面跟着一个字母t。catThecatsatonthemat
  正则表达式123会匹配字符串123。通过将正则表达式中的每个字符逐个与要匹配的字符串中的每个字符进行比较,来完成正则匹配。
  正则表达式通常区分大小写,因此正则表达式Cat与字符串cat不匹配。CatThecatsatontheCat2。元字符
  元字符是正则表达式的基本组成元素。元字符在这里跟它通常表达的意思不一样,而是以某种特殊的含义去解释。有些元字符在写在方括号内时有特殊含义。
  元字符如下:
  元字符
  描述
  。
  匹配除换行符以外的任意字符。
  〔〕
  字符类,匹配方括号中包含的任意字符。
  〔〕
  否定字符类。匹配方括号中不包含的任意字符
  匹配前面的子表达式零次或多次
  匹配前面的子表达式一次或多次
  ?
  匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。
  {n,m}
  花括号,匹配前面字符至少n次,但是不超过m次。
  (xyz)
  字符组,按照确切的顺序匹配字符xyz。
  分支结构,匹配符号之前的字符或后面的字符。
  转义符,它可以还原元字符原来的含义,允许你匹配保留字符〔〕(){}。?
  匹配行的开始
  匹配行的结束2。1英文句号
  英文句号。是元字符的最简单的例子。元字符。可以匹配任意单个字符。它不会匹配换行符和新行的字符。例如正则表达式。ar,表示:任意字符后面跟着一个字母a,
  再后面跟着一个字母r。。arThecarparkedinthegarage。2。2字符集
  字符集也称为字符类。方括号被用于指定字符集。使用字符集内的连字符来指定字符范围。方括号内的字符范围的顺序并不重要。
  例如正则表达式〔Tt〕he,表示:大写T或小写t,后跟字母h,再后跟字母e。〔Tt〕heThecarparkedinthegarage。
  然而,字符集中的英文句号表示它字面的含义。正则表达式ar〔。〕,表示小写字母a,后面跟着一个字母r,再后面跟着一个英文句号。字符。ar〔。〕Agarageisagoodplacetoparkacar。2。2。1否定字符集
  一般来说插入字符表示一个字符串的开始,但是当它在方括号内出现时,它会取消字符集。例如正则表达式〔c〕ar,表示:除了字母c以外的任意字符,后面跟着字符a,
  再后面跟着一个字母r。〔c〕arThecarparkedinthegarage。2。3重复
  以下元字符,或?用于指定子模式可以出现多少次。这些元字符在不同情况下的作用不同。2。3。1星号
  星号表示匹配上一个匹配规则零次或多次。正则表达式a表示小写字母a可以重复零次或者多次。但是它如果出现在字符集或者字符类之后,它表示整个字符集的重复。
  例如正则表达式〔az〕,表示:一行中可以包含任意数量的小写字母。〔az〕Thecarparkedinthegarage21。
  星号可以与元符号。用在一起,用来匹配任意字符串。。星号可以与空格符s一起使用,用来匹配一串空格字符。
  例如正则表达式scats,表示:零个或多个空格,后面跟小写字母c,再后面跟小写字母a,再在后面跟小写字母t,后面再跟零个或多个空格。scatsThefatcatsatonthecat。2。3。2加号
  加号表示匹配上一个字符一次或多次。例如正则表达式c。t,表示:一个小写字母c,后跟任意数量的字符,后跟小写字母t。c。tThefatcatsatonthemat。2。3。3问号
  在正则表达式中,元字符?用来表示前一个字符是可选的。该符号匹配前一个字符零次或一次。
  例如正则表达式〔T〕?he,表示:可选的大写字母T,后面跟小写字母h,后跟小写字母e。〔T〕heThecarisparkedinthegarage。〔T〕?heThecarisparkedinthegarage。2。4花括号
  在正则表达式中花括号(也被称为量词?)用于指定字符或一组字符可以重复的次数。例如正则表达式〔09〕{2,3},表示:匹配至少2位数字但不超过3位(0到9范围内的字符)。〔09〕{2,3}Thenumberwas9。9997butweroundeditoffto10。0。
  我们可以省略第二个数字。例如正则表达式〔09〕{2,},表示:匹配2个或更多个数字。如果我们也删除逗号,则正则表达式〔09〕{2},表示:匹配正好为2位数的数字。〔09〕{2,}Thenumberwas9。9997butweroundeditoffto10。0。〔09〕{2}Thenumberwas9。9997butweroundeditoffto10。0。2。5字符组
  字符组是一组写在圆括号内的子模式(。。。)。正如我们在正则表达式中讨论的那样,如果我们把一个量词放在一个字符之后,它会重复前一个字符。
  但是,如果我们把量词放在一个字符组之后,它会重复整个字符组。
  例如正则表达式(ab)表示匹配零个或多个的字符串ab。我们还可以在字符组中使用元字符。例如正则表达式(cgp)ar,表示:小写字母c、g或p后面跟字母a,后跟字母r。(cgp)arThecarisparkedinthegarage。2。6分支结构
  在正则表达式中垂直条用来定义分支结构,分支结构就像多个表达式之间的条件。现在你可能认为这个字符集和分支结构的工作方式一样。
  但是字符集和分支结构巨大的区别是字符集只在字符级别上有作用,然而分支结构在表达式级别上依然可以使用。
  例如正则表达式(Tt)hecar,表示:匹配大写字母T或小写字母t,后面跟小写字母h,后跟小写字母e,或匹配小写字母c,后跟小写字母a,后跟小写字母r。(Tt)hecarThecarisparkedinthegarage。2。7转义特殊字符
  正则表达式中使用反斜杠来转义下一个字符。这将允许你使用保留字符来作为匹配字符{}〔〕。?。在特殊字符前面加,就可以使用它来做匹配字符。
  例如正则表达式。是用来匹配除了换行符以外的任意字符。现在要在输入字符串中匹配。字符,正则表达式(fcm)at。?,表示:小写字母f、c或者m后跟小写字母a,后跟小写字母t,后跟可选的。字符。(fcm)at。?Thefatcatsatonthemat。2。8定位符
  在正则表达式中,为了检查匹配符号是否是起始符号或结尾符号,我们使用定位符。
  定位符有两种类型:第一种类型是检查匹配字符是否是起始字符,第二种类型是,它检查匹配字符是否是输入字符串的最后一个字符。2。8。1插入符号
  插入符号符号用于检查匹配字符是否是输入字符串的第一个字符。如果我们使用正则表达式a(如果a是起始符号)匹配字符串abc,它会匹配到a。
  但是如果我们使用正则表达式b,它是匹配不到任何东西的,因为在字符串abc中b不是起始字符。
  让我们来看看另一个正则表达式(Tt)he,这表示:大写字母T或小写字母t是输入字符串的起始符号,后面跟着小写字母h,后跟小写字母e。(Tt)heThecarisparkedinthegarage。(Tt)heThecarisparkedinthegarage。2。8。2美元符号
  美元符号用于检查匹配字符是否是输入字符串的最后一个字符。例如正则表达式(at。),表示:小写字母a,后跟小写字母t,后跟一个。字符,且这个匹配器必须是字符串的结尾。(at。)Thefatcat。sat。onthemat。(at。)34;Thefatcatsatonthemat。3。简写字符集
  正则表达式为常用的字符集和常用的正则表达式提供了简写。简写字符集如下:
  简写
  描述
  。
  匹配除换行符以外的任意字符
  w
  匹配所有字母和数字的字符:〔azAZ09〕
  W
  匹配非字母和数字的字符:〔w〕
  d
  匹配数字:〔09〕
  D
  匹配非数字:〔d〕
  s
  匹配空格符:〔frp{Z}〕
  S
  匹配非空格符:〔s〕4。断言
  后行断言和先行断言有时候被称为断言,它们是特殊类型的非捕获组(用于匹配模式,但不包括在匹配列表中)。当我们在一种特定模式之前或者之后有这种模式时,会优先使用断言。
  例如我们想获取输入字符串4。44and10。88中带有前缀的所有数字。我们可以使用这个正则表达式(?)〔09。〕,表示:获取包含。字符且前缀为的所有数字。
  以下是正则表达式中使用的断言:
  符号
  描述
  ?
  正向先行断言
  ?!
  负向先行断言
  ?
  正向后行断言
  ?
  负向后行断言4。1正向先行断言
  正向先行断言认为第一部分的表达式的后面必须是先行断言表达式。返回的匹配结果仅包含与第一部分表达式匹配的文本。
  要在一个括号内定义一个正向先行断言,在括号中问号和等号是这样使用的(?。。。)。先行断言表达式写在括号中的等号后面。
  例如正则表达式(Tt)he(?sfat),表示:匹配大写字母T或小写字母t,后面跟字母h,后跟字母e。
  在括号中,我们定义了正向先行断言,它会引导正则表达式引擎匹配后面跟着fat的The或the。(Tt)he(?sfat)Thefatcatsatonthemat。4。2负向先行断言
  当我们需要指定第一部分表达式的后面不跟随某一内容时,使用负向先行断言。负向先行断言的定义跟我们定义的正向先行断言一样,
  唯一的区别在于我们使用否定符号!而不是等号,例如(?!。。。)。
  我们来看看下面的正则表达式(Tt)he(?!sfat),表示:从输入字符串中获取全部The或者the且不匹配fat前面加上一个空格字符。(Tt)he(?!sfat)Thefatcatsatonthemat。4。3正向后行断言
  正向后行断言用于获取跟随在特定模式之后的所有匹配内容。正向后行断言表示为(?。。。)。例如正则表达式(?(Tt)hes)(fatmat),表示:从输入字符串中获取在单词The或the之后的所有fat和mat单词。(?(Tt)hes)(fatmat)Thefatcatsatonthemat。4。4负向后行断言
  负向后行断言是用于获取不跟随在特定模式之后的所有匹配的内容。负向后行断言表示为(?。例如正则表达式(?,表示:在输入字符中获取所有不在The或the之后的所有单词cat。(?!(Tt)hes)(cat)Thecatsatoncat。5。标记
  标记也称为修饰符,因为它会修改正则表达式的输出。这些标志可以以任意顺序或组合使用,并且是正则表达式的一部分。
  标记
  描述
  i
  不区分大小写:将匹配设置为不区分大小写。
  g
  全局搜索:搜索整个输入字符串中的所有匹配。
  m
  多行匹配:会匹配输入字符串每一行。5。1不区分大小写
  i修饰符用于执行不区分大小写匹配。例如正则表达式Thegi,表示:大写字母T,后跟小写字母h,后跟字母e。
  但是在正则匹配结束时i标记会告诉正则表达式引擎忽略这种情况。正如你所看到的,我们还使用了g标记,因为我们要在整个输入字符串中搜索匹配。TheThefatcatsatonthemat。ThegiThefatcatsatonthemat。5。2全局搜索
  g修饰符用于执行全局匹配(会查找所有匹配,不会在查找到第一个匹配时就停止)。
  例如正则表达式。(at)g,表示:除换行符之外的任意字符,后跟小写字母a,后跟小写字母t。
  因为我们在正则表达式的末尾使用了g标记,它会从整个输入字符串中找到每个匹配项。。(at)Thefatcatsatonthemat。。(at)gThefatcatsatonthemat。5。3多行匹配
  m修饰符被用来执行多行的匹配。正如我们前面讨论过的(,),使用定位符来检查匹配字符是输入字符串开始或者结束。但是我们希望每一行都使用定位符,所以我们就使用m修饰符。
  例如正则表达式at(。)?gm,表示:小写字母a,后跟小写字母t,匹配除了换行符以外任意字符零次或一次。而且因为m标记,现在正则表达式引擎匹配字符串中每一行的末尾。。at(。)?Thefatcatsatonthemat。。at(。)?gmThefatcatsatonthemat。常用正则表达式正整数:d负整数:d电话号码:?〔ds〕{3,}电话代码:?〔ds〕(?〔ds〕{10,}整数:?d用户名:〔wd。〕{4,16}字母数字字符:〔azAZ09〕带空格的字母数字字符:〔azAZ09〕密码:(?。{6,})((?。〔AZaz09〕)(?。〔AZ〕)(?。〔az〕))。电子邮件:(〔azAZ09。〕〔azAZ09。〕。〔azAZ〕{2,4})IPv4地址:((?:(?:25〔05〕2〔04〕〔09〕〔01〕?〔09〕〔09〕?)。){3}(?:25〔05〕2〔04〕〔09〕〔01〕?〔09〕〔09〕?))小写字母:(〔az〕)大写字母:(〔AZ〕)网址:(((httphttpsftp):)?(〔〔azAZ09〕。〕)(。)(〔〔azAZ09〕〕){2,4}(〔〔azAZ09〕。?〕))VISA信用卡号码:(4〔09〕{12}(?:〔09〕{3})?)日期(MMDDYYYY):(0?〔19〕1〔012〕)〔。〕(0?〔19〕〔12〕〔09〕3〔01〕)〔。〕(1920)?〔09〕{2}日期(YYYYMMDD):(1920)?〔09〕{2}〔。〕(0?〔19〕1〔012〕)〔。〕(0?〔19〕〔12〕〔09〕3〔01〕)万事达信用卡号码:(5〔15〕〔09〕{14})
投诉 评论 转载

马科斯阿隆索为巴萨效力是我的愿望能否踢世界杯由恩里克决定直播吧11月7日讯巴萨后卫马科斯阿隆索接受《每日体育报》独家采访,他谈到了巴萨等情况。关于皮克在诺坎普的最后一场比赛,以及自己的职业生涯?我爸爸当时在执教,我们跟着……喜马拉雅小主播云集音频让孩子们拥抱更广袤的天空在喜马拉雅的用户群体构成中,青少年儿童占据了一定的比例,为了满足这部分听众的需求,喜马拉雅推出了大量的教育素材,家长可以借此培养孩子的兴趣、行为习惯等。音频在助力孩子启蒙教育中……2022年了,还有社交产品在拿融资?是的!别惊讶看图中国电池赛道的百亿上市公司和独角兽们看图2022Q2,腾讯、阿里、百度、小米等头部大厂投资比Q1更谨慎了看图中国芯片半导体行业十大活跃投资方看图2022上半年……第五届进博会集中签约不断目前已达成数百项签约和合作意向这两天进博会迎来集中签约,目前已达成数百项签约和合作意向。此外,近60家企业和机构已签约第六届进博会。从11月6日开始,进博会的集中签约台大单不断。中国兵器工业集团……为什么阳春面走不出上海?内行人指出3点原因,属实鸡肋中国吃面的地区有很多,所以也就出现了很多具有地域性的面条,有些名气很大,但是却很少见,就像是今天咱们要说的阳春面,作为江淮一带十分有名气的面条,为啥在很多城市却见不到呢?……航天新征程执着不变的初心!费俊龙再上太空是我毕生追求央视网消息:这次执行神舟十五号载人飞行任务的指令长费俊龙是我国首批航天员,曾经担任神舟六号载人飞行任务指令长,和航天员聂海胜一起执行为期五天的飞行任务。这次神舟十五号飞行任务,……为什么月亮会有圆有缺?如果你认为是地球遮挡了阳光,那你就错了我们都知道,月球本身并不是一个光源,但由于月球能够反射阳光,并且离地球还非常近(相对于太阳系中的其他星球),因此在地球上的我们看来,月亮就成了一个非常明亮的天体,正因为如此,我……老爸,为什么走的这样匆忙文王铁华天降瑞雪,大地白纱。瘟疫肆虐,卷走阿爸。老爸,您是王家最后一根顶梁柱啊,我的根基大厦,瞬间崩塌。曾记得,您下班回家,总爱躺在炕头铁军哥盘着的腿上,哥哥……学习正则表达式什么是正则表达式?正则表达式是一种被用于从文本中检索符合某些特定模式的文本。正则表达式是从左到右来匹配一个字符串的。RegularExpression这个词太长了,……世界杯踢17场才赢1场的球队最近的热点卡塔尔世界杯,作为东道主的卡塔尔为了世界杯兴建交通,大笔一挥斥资2200亿至3000亿美元左右,是有史以来最昂贵的一届世界杯。而卡塔尔的球队战绩就与举办热情不匹配了,……app强制自动续费,官方出手!12月12日,据国家互联网信息办公室(下称国家网信办)官网消息,国家网信办决定开展清朗移动互联网应用程序领域乱象整治专项行动,要求从搜索查找、下载安装、运行使用三个环节督促应用……原神中的那些神仙台词永恒可以把时间拉的很长,然而其间每一节点,都会变得无比脆弱散兵在无尽的雪原里,生命随时都会被碎骨一般的纯白地吞噬,连足迹也无法留下。达达利亚。风带来故事的种子,时间使之发芽。若……
60!斯诺克世界冠军碾压晋级,世界第10爆冷出局利好丁俊晖赵露思状告科大讯飞,明天开庭!双方都有来头,后者老板身家85奥运遗产全民享用!雪飞燕17条高山雪道,全新亮相!春风得意拂春柳,往后余生开心活韩媒江原FC收到深圳队拖欠的林采民转会费,合计15亿韩元基金春节之前还有动的可能性1973年,我们进藏新兵,与都兰兵站的炊事班干架了调查碳酸锂价跌破30万元背后博弈主导权之变三星将推出三折叠的折叠屏手机,或于今年晚些时候发布中国第一纳税大户向国家缴纳1。44万亿,相当21个华为36个理性消费少买这些没用的,真的可以存下钱Netty线程模型源码剖析(文章尾附带全流程图)

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找