电脑安全

您当前的位置:主页 > 电脑安全 >

正则表达式二-网络编程

来源:[db:来源]标题:   字符    编辑:电脑技术全能网 时间:2019-09-23 06:22

原标题:正则表达式二-网络编程
   5."[]"方括号(字符簇)用法 1)[]婚配一个字符,在[]中应用^扫尾表现取非,即厥后的字符全体是不婚配的。 例1:[a-zA-Z0-9]婚配全部巨细写字母和数字。 例2:[/n/t/r/f]婚配全部空字符。 例3:[^A-Z]不婚配小写字母。 例4:^[^0-9]婚配不以数字扫尾的字符或字符串 2)特别字符"."(句点)婚配除了"新行"以外的全部字符,形式^.abc$婚配任何故abc开头的字符,然而不能婚配其自身。形式"."则能够婚配任何字符串,除了空字符串和只要一个"新行"字符的字符串。 例1:'^.abc$';婚配全部尾部含有abc的字符串,不婚配小数(新行),当不婚配abc。 例2:'.';婚配全部字符串,但不婚配空值。 例3:'.abc';婚配全部含abc的字符串,小数等等都能够,条件是不以abc为首,不婚配abc。 例4:'.abc$';婚配全部以abc开头的字符串,任何小数等等都能够,不婚配abc。 3)php供给了内置通用字符簇: [[:alpha:]]任何字母 [[:digit:]]任何数字 [[:alnum:]]任何字母和数字 [[:space:]]任何空缺字符 [[:upper:]]任何小写字母 [[:lower:]]任何小写字母 [[:punct:]]任何表点标记 [[:xdigit:]]任何十六进制数字 [[:cntrl:]]任何ASCII值小于32的字符 留神:以上字符簇有个特色,只有被婚配的字符或字符串中有此字符,即婚配准确,不论字符串是以甚么方法构成的。6."{}"大括号用法 1)方括号只能婚配一个字符,而婚配多个字符只能用{}完成:{}用来断定后面内容呈现的次数。{n}表现呈现n次;{m,n}表现呈现m~n次,包含m和n次;{n,}表现呈现n次或许n次以上。 例1:^a{10}$;婚配aaaaaaaaaa。 例2:[0-9]{1,}$;婚配全部>0的数。 2)"{}"与通配符之间的关联 ?相称于 {0,1} 零次或一次 *..... {0,} 零次或很多次 +..... {1,} 一次或很多次7."()"用法 圆括号"()"括住的pattern表现子形式,如$pattern='([1-9]{1}[0-9]{3})-([0-1]{1}[1-2]{1})-([0-3]{1}([0-9]|))';()扩住的就是一个个子形式,()相称于把他们自力起来,分辨婚配而彼此不烦扰。二.POSIX作风正则表白式函数1.ereg ereg(pattern,string,[array $regs]); eregi(pattern,string,[array $regs]); ereg函数在string中找到满意pattern形式的文本,假如找到true,没找到false。假如有第三个参数$regs,那找到的文本将放在$regs[0]中,而且regs数组中将一次寄存各个圆括号表白的子形式婚配的成果。$regs[1]中寄存了第一个子形式所婚配的成果,$regs[2]中是第二个,次序从左到右,顺次类推。假如没有找到婚配的文本,$regs数组的值不会被转变。 留神:假如找到了婚配的文本,不论找到的子形式是几多个>9仍是<9,ereg()只会转变$regs数组前10个元素的值。然而这不会影响函数对子形式组合的婚配成果。ereg老是先婚配完,假如没发觉婚配的文本就false,发觉了就true。假如有子形式,会逐渐依据这些子形式从新在字符串中查找婚配的文本,直到$regs数组被填满10个元素或许全部子形式被婚配完,假如子形式少于10则残余的$regs将被赋空值。总之一句话,婚配归婚配,$regs归$regs,$regs只要10个值。 eregi()函数与ereg()基础用法雷同,只是eregi对巨细写不敏感。2.ereg_replace和eregi_replace ereg_replace(pattern,string replacement,string) eregi_replace(pattern,string replacement,string) string字串中满意pattern的文本将被调换成replacement。假如string中有pattern婚配的文本,那末前往调换以后的值,假如没有,则前往本来的string值。 假如pattern中包括子形式,子形式能够有抉择的被保存而不被调换。 例1:pattern中的第二个子形式不被调换,replacement可写成如许:replacement//2。如许string中婚配的pattern的字符串将被调换为replacement+pattern2,pattern2表现婚配pattern的文本中又婚配pattern的第二个子形式的文本。假如应用"//0"表现保存全部婚配文本。应用这个特征能够完成在特定的字符串以后拔出文本的操纵。 replacement必需是字符串范例变量,假如不是,调换时将强迫转换成字符串范例。3.split()函数和spliti()函数用法 split(pattern,string,[int limit]); spliti(pattern,string,[int limit]); split以正则表白式pattern界说的形式为分开符将string分开成几个局部。假如分开胜利,前往的值为各个分开后局部构成的数组,失利则前往false。可选limit表现最大宰割块数。假如limit为5,那末即便string有>5个的处所合乎pattern,string也只被宰割为5个局部,最初一个局部是string去掉前四个局部后剩下的局部。前往值中也只要5个元素。三.perl作风正则表白式及相干函数1.perl正则语法 perl分开符,可应用"/","!"和"{}"。 例1:/^[^0-9]/ !^[0-9]! {^[0-9]}三个都一样。 在分开符外部,分开字符自身就是一个特别敏感字符,要停止本义。假如用分开符"/",正则中又用了表白字符的"/",则必需要用"//"。假如混杂用"/"和"!"就没成绩。 例2://///$/ !//$! 二者也雷同 例3:!^/!/![0-9]$! /^!![0-9]$/ 二者也雷同2.perl特别意思字符 /a ASCII值为7的告警符 /b 词的界限 /A 和脱出标记("/")等价 /B 非词界限 /cn 操纵字符 /d 单个数字 /D 单个非数字 /s 单个空缺 /S 单个非空缺 /w 单个的字母或下划线 /W 单个的非词字符(不是字母也不是下划线) /Z 从目的字串的尾部开端婚配3.高等特征 1)或运算"|": 比方!^ex|em!婚配前提是ex或em扫尾的字符串,还能够写成!^e(x|m)!。 留神:()内的内容代表子形式/ 2)逻辑标记前面的形式选项 !正则表白式!逻辑选项 A:只婚配位于目的字串扫尾的字符。 E:该选项使本义字符$形成的正则表白式只婚配目的字符串的开头字符。假如抉择m选项,该选项就被疏忽。 U:该选项制止最大长度的搜寻。个别情形下,搜寻会只管找最长的婚配字符串。比方形式/a+/在"caaaaab"字符串中的婚配成果是"aaaaa",然而应用该选项的形式/a+/U婚配的成果会是"a"。 S:对形式停止进修,进步查找速率。 i:该选项疏忽巨细写。 m:该选项将含有换行符的字符串视为多行而不是一行。这个时间"$","^"等字符会婚配每个换行符。 s:该选项使句点"."也婚配换行符。 x:该选项告诉PHP说明器在剖析的时间疏忽正则表白式界说中的非本义空格符。如许能够在正则表白式中应用空格来加强其可读性,但这时在表白式中应用空格符必需应用本义字符。 3)扩大形式标记。 (?#comment) 增加解释comment,能够加强正则可读性。 (?=pattern) 指定在形式以后必需追随值pattern。 (?!pattern) 指定在形式以后不能追随值pattern。 (?n) 在形式外部而非开头处界说形式选项n。 (?: ) 耗费字符,不捕捉婚配成果。 例:echo ereg("?:^a$","a");//无任何输入