正则表达式模式修正符

模式修正符号在正则表达式定界符之外使用(最后一个斜线“/”之后),例如“php/i”。其中“/php/”是一个正则表达式的模式,而“i”就是修正此模式所使用的修正符号,用来匹配时不区分大小写。模式修正符可以调整正则表达式的解释,扩展了正则表达式在匹配、替换等操作时的某些功能,而且模式修正符号也可以组合使用,更增强了正则表达式的处理能力。例如“/php/Uis”则是使用“U”、“i”和“s”三个模式修正符组合在一起使用。模式修正符对编写简洁而简小的表达式大有帮助,在下面的表格中,列出了一些常用的模式修正符及其功能说明,如下表所示。

  下面是几个简单的示例,用以说明表中模式修正符中的使用。在使用模式修正符时,其中的空格和换行被忽略,如果使用其他非模式修正字符会导致错误。如下所示:

  模式“/Web Server/ix”可以用来匹配字符串“webServer”,忽略大小写和空白。

  模式“/a.*e/”去匹配字符串“abcdefgabcdefgabcdefg”,由于模式中的“.*”按贪婪匹配,会从这个字符串中匹配出“abcdefgabcdefgabcde”。从第一个“a”字母开始到最后一个“e”字母结束,都属于“.*”的内容,所以不是“abcde”。如果想取消这种贪婪匹配,想从第一个字母“a”只匹配到第一个字母“e”就结束,匹配出字符串“abcde”,可以使用模式修正符号“U”或在模式中使用“.*”后面跟上“?”,例如使用模式“/a.*e/U”或“/a.*?e/”。相反,如果两个一起使用又启用了贪婪匹配,例如模式“/a.*?e/U”则匹配字符串“abcdefgabcdefgabcdefg”中的“abcdefgabcdefgabcde”,而不是“abcde”。建议在模式中使用“.*”后面跟上“?”代替模式修正符号“U”,因为在其他一些编程语言中,如果也是采用Perl兼容的正则函数,可能没有模式修正符号“U”,例如JavaScript中就不存在这个模式修正符号。

  模式“/^is/m”可以匹配字符串“this\nis\na\ntes”中的is,因为使用模式修正符“m”将字符串视为了多行,第二行的开头出现了“is”则匹配成功。默认的正则开始“^”和结束“$”将目标字符串作为单一的一“行”(甚至其中包含有换行符也是如此)。

>> 本文固定链接: http://php.ncong.com/php_course/php_zend/xiuzhengfu.html

>> 转载请注明: 恩聪php 2014年08月01日 于 恩聪PHP学习教程 发表

正则表达式模式修正符

时间: 2024-07-30 11:19:41

正则表达式模式修正符的相关文章

正则表达式模式修正符 比如/esi

正则表达式模式修正符 比如/esi 作者: 字体:[增加 减小] 类型:转载 下面列出了当前在 PCRE 中可能使用的修正符.括号中是这些修正符的内部 PCRE 名.修正符中的空格和换行被忽略,其它字符会导致错误. 说明 下面列出了当前在 PCRE 中可能使用的修正符.括号中是这些修正符的内部 PCRE 名.修正符中的空格和换行被忽略,其它字符会导致错误. i (PCRE_CASELESS) 如果设定此修正符,模式中的字符将同时匹配大小写字母. s(PCRE_DOTALL) 如果设定了此修正符,

正则表达式——模式修正符

# re.Istring忽略大小写string1 = "HeLLO word"pattern2 = re.compile(r"hello",re.I)rett = pattern2.search(string1)print(rett.group())#输出结果:HeLLO # re.S视为单行模式string2 = """<div>别国风光,千里冰封,万里雪飘望长城内外,惟余莽莽,大河上下,顿失滔滔</div>&

从正则表达式的iUs说说模式修正符

本想做个简单的采集程序,发现被抓页面代码的规律后发现抓下来的内容没有放到一个数组中,而是放在一个元素中,无奈找遍资料发现在正则表达式后加上"/iUs"后竟然可以了. 网上关于iUs的说明多数都是抄袭的,没有做过多的解释,对于一个小学毕业证是买来的人来说是在是不好理解.不过幸亏Google让我找到答案. "iUs" 在这里叫"模式修正符".模式修正符其实就是几个字母,可以一次使用一个也可以一次使用多个,每一个都具有一定的意义,模式修正符是对正则表达

正则表达式中常用的模式修正符有i、g、m、s、x、e详解

正则表达式中常用的模式修正符有i.g.m.s.x.e等.它们之间可以组合搭配使用. 它们的作用如下: //修正符:i 不区分大小写的匹配; //如:"/abc/i"可以与abc或aBC或ABc等匹配; //修正符:g表示全局匹配 //修正符:m 将字符串视为多行,不管是那行都能匹配; 例://模式为:$mode="/abc/m"; //要匹配的字符串为:$str="bcefg5e\nabcdfe" //注意其中\n,换行了;abc换到了下一行;

正则表达式中模式修正符作用详解(i、g、m、s、x、e)

正则表达式中常用的模式修正符有i.g.m.s.x.e等.它们之间可以组合搭配使用. 它们的作用如下: //修正符:i 不区分大小写的匹配; //如:"/abc/i"可以与abc或aBC或ABc等匹配; //修正符:g表示全局匹配 //修正符:m 将字符串视为多行,不管是那行都能匹配; 例://模式为:$mode="/abc/m";          //要匹配的字符串为:$str="bcefg5e\nabcdfe"              //

正则 模式修正符

模式修正符 说明 i 表示在和模式进行匹配进不区分大小写 m 将模式视为多行,使用^和$表示任何一行都可以以正则表达式开始或结束 s 如果没有使用这个模式修正符号,元字符中的"."默认不能表示换行符号,将字符串视为单行 x 表示模式中的空白忽略不计 e 正则表达式必须使用在preg_replace替换字符串的函数中时才可以使用(讲这个函数时再说) A 以模式字符串开头,相当于元字符^ Z 以模式字符串结尾,相当于元字符$ U 正则表达式的特点:就是比较"贪婪",使用

PHP正则表达式模式修饰符详解

PHP模式修饰符又叫模式修正符,是在正则表达式的定界符之外使用.主要用来调整正则表达式的解释,提扩展了正则表达式在匹配.替换等操作的某些功能,增强了正则的能力.但是有很多地方的解释都是错误的,也容易误导别人,所以今天我把这个文档整理出来,供大家参考. 模式修正符号 功能描述 i 在和正则匹配是不区分大小写 m 将字符串视为多行.默认的正则开始“^”和结束“$”将目标字条串作为一单一的一“行”字符(甚至其中包括换行符也是如此).如果在修饰符中加上“m”,那么开始和结束将会指点字符串的每一行的开头就

关于php正则表达式模式修饰符

一直以来,以为自己的正则表达式学的还算可以(基本工作上遇到的问题都能解决),但有时候却是知其然而不知其所以然,在网上看到这篇文章,解释了之前的很多疑问,记录下来,随时温故而知新. i (PCRE_CASELESS) 如果设置了这个修饰符, 模式中的字母会进行大小写不敏感匹配. m (PCRE_MULTILINE) 默认情况下, PCRE认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行), "行首"元字符(^)仅匹配字符串的开始位置, 而"行末"元字符($

正则表达式模式修饰符

下面列出了当前可用的 PCRE 修饰符.括号中提到的名字是 PCRE 内部这些修饰符的名称. 模式修饰符中的空格,换行符会被忽略,其他字符会导致错误. i (PCRE_CASELESS) 如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配. m (PCRE_MULTILINE) 默认情况下,PCRE 认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行), "行首"元字符 (^) 仅匹配字符串的开始位置, 而"行末"元字符 ($) 仅匹配字符串末尾,