主页 > PHP教程 > 正文

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

形式批改符: 阐明正则表达式形式中运用的批改符

preg_match('/\d+/is', $str);


其间斜杠后边的 is 便是批改符


阐明:下面列出了当时在 PCRE 中或许运用的批改符。括号中是这些批改符的内部 PCRE 名。批改符中的空格和换行被疏忽,其它字符会导致过错。


i (PCRE_CASELESS)


假如设定此批改符,形式中的字符将一起匹配大小写字母。


m(PCRE_MULTILINE)


默许情况下,PCRE 将方针字符串作为单一的一“行”字符所组成的(乃至其间包含有换行符也是如此)。“行开端”元字符(^)只是匹配字符串的开端,“行完毕”元字符($)仅 仅匹配字符串的完毕,或许最终一个字符是换行符时其前面(除非设定了 D 批改符)。这和 Perl 是相同的。 当设定了此批改符,“行开端”和“行完毕”除了匹配整个字符串最初和完毕外,还别离匹配其间的换行符的之后和之前。这和 Perl 的 /m 批改符是等效的。假如方针字符串中没有“\n”字符或许形式中没有 ^ 或 $,则设定此批改符没有任何作用。


s(PCRE_DOTALL)


假如设定了此批改符,形式中的圆点元字符(.)匹配一切的字符,包含换行符。没有此设定的话,则不包含换行符。这和 Perl 的 /s 批改符是等效的。扫除字符类例如 [^a] 总是匹配换行符的,不管是否设定了此批改符。


x(PCRE_EXTENDED)


假如设定了此批改符,形式中的空白字符除了被转义的或在字符类中的以外彻底被疏忽,在未转义的字符类之外的 # 以及下一个换行符之间的一切字符,包含两端,也都被疏忽。这和 Perl 的 /x 批改符是等效的,使得能够在杂乱的形式中参加注释。但是留意,这仅适用于数据字符。空白字符或许永久不会呈现于形式中的特别字符序列,例如引进条件子形式 的序列 (?( 中心。


e


假如设定了此批改符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其成果来替换所查找的字符串。 只要 preg_replace() 运用此批改符,其它 PCRE 函数将疏忽之。 注: 本批改符在 PHP3 中不可用。


A(PCRE_ANCHORED)


假如设定了此批改符,形式被强制为“anchored”,即强制仅从方针字符串的最初开端匹配。此作用也能够经过恰当的形式自身来完成(在 Perl 中完成的仅有办法)。


D(PCRE_DOLLAR_ENDONLY)


假如设定了此批改符,形式中的美元元字符仅匹配方针字符串的结束。没有此选项时,假如最终一个字符是换行符的话,美元符号也会匹配此字符之前(但不会匹配任何其它换行符之前)。假如设定了 m 批改符则疏忽此选项。Perl 中没有与其等价的批改符。


S


当一个形式将被运用若干次时,为加快匹配起见值得先对其进行剖析。假如设定了此批改符则会进行额定的剖析。现在,剖析一个形式仅对没有单一固定开端字符的 non-anchored 形式有用。


U(PCRE_UNGREEDY)


本批改符反转了匹配数量的值使其不是默许的重复,而变成在后边跟上“?”才变得重复。这和 Perl 不兼容。也能够经过在形式之中设定 (?U) 批改符或许在数量符之后跟一个问号(如 .*?)来启用此选项。


X(PCRE_EXTRA)


此批改符启用了一个 PCRE 中与 Perl 不兼容的额定功用。形式中的任何反斜线后边跟上一个没有特别含义的字母导致一个过错,然后保存此组合以备将来扩大。默许情况下,和 Perl 相同,一个反斜线后边跟一个没有特别含义的字母被当成该字母自身。当时没有其它特性受此批改符操控。


u(PCRE_UTF8)


此批改符启用了一个 PCRE 中与 Perl 不兼容的额定功用。形式字符串被当成 UTF-8。本批改符在 Unix 下自 PHP 4.1.0 起可用,在 win32 下自 PHP 4.2.3 起可用。自 PHP 4.3.5 起开端检查形式的 UTF-8 合法性。


上一篇:PHP文件类型检查及fileinfo模块装置运用
下一篇:处理PHP导出CSV文件中文乱码问题

PythonTab微信大众号:

Python技能交流合作群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854