您好、欢迎来到现金彩票网!
当前位置:2019欢乐棋牌 > 子文本替换 >

正则表达式

发布时间:2019-08-21 07:11 来源:未知 编辑:admin

  正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为元字符)。

  正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。

  正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。

  普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。

  如果想查找元字符本身的话,比如查找.,或者*,就出现了问题:没办法指定它们,因为它们会被解释成别的意思。这时就得使用\来取消这些字符的特殊意义。因此,应该使用\.和\*。当然,要查找\本身,也得用\\。

  分枝条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用把不同的规则分隔开。

  0\d{2}-\d{8}0\d{3}-\d{7}:匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如),一种是4位区号,7位本地号()。

  对于\d{5}-\d{4}\d{5},这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字。

  如果把它改成\d{5}\d{5}-\d{4},那么就只会匹配5位的邮编(以及9位邮编的前5位)。

  原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。

  要理解这个表达式,请按下列顺序分析它:\d{1,3}匹配1到3位的数字,(\d{1,3}\.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(\d{1,3})。

  使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。

  可以自己指定子表达式的组名。要指定一个子表达式的组名,请使用这样的语法:(?Word\w+)(或者把尖括号换成也行:(?Word\w+)),这样就把\w+的组名指定为Word了。

  (?=exp)称为零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。

  (?=exp)称为零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。

  (?!exp)称为零宽度负预测先行断言,断言此位置的后面不能匹配表达式exp。

  如:\d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字。

  (?!exp)称为零宽度负回顾后发断言,断言此位置的前面不能匹配表达式exp。

  当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。

  以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。

  前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。

  例:a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。

http://fyijournal.com/ziwenbentihuan/458.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有