`

正则表达式模式修正符

阅读更多
原帖地址:http://www.cnblogs.com/txd66/archive/2013/06/10/3130755.html

下面列出了当前在 PCRE 中可能使用的修正符。括号中是这些修正符的内部 PCRE 名。修正符中的空格和换行被忽略,其它字符会导致错误。 

i (PCRE_CASELESS) 
如果设定此修正符,模式中的字符将同时匹配大小写字母。 
s(PCRE_DOTALL) 
如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。这和 Perl 的 /s 修正符是等效的。排除字符类例如 [^a] 总是匹配换行符的,无论是否设定了此修正符。 

m(PCRE_MULTILINE) 
默认情况下,PCRE 将目标字符串作为单一的一“行”字符所组成的(甚至其中包含有换行符也是如此)。“行起始”元字符(^)仅仅匹配字符串的起始,“行结束”元字符($)仅仅匹配字符串的结束,或者最后一个字符是换行符时其前面(除非设定了 D 修正符)。这和 Perl 是一样的。 
当设定了此修正符,“行起始”和“行结束”除了匹配整个字符串开头和结束外,还分别匹配其中的换行符的之后和之前。这和 Perl 的 /m 修正符是等效的。如果目标字符串中没有“n”字符或者模式中没有 ^ 或 $,则设定此修正符没有任何效果。 


如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。 
只有 preg_replace() 使用此修正符,其它 PCRE 函数将忽略之。 
注: 本修正符在 PHP3 中不可用。 
x(PCRE_EXTENDED) 
如果设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的 # 以及下一个换行符之间的所有字符,包括两头,也都被忽略。这和 Perl 的 /x 修正符是等效的,使得可以在复杂的模式中加入注释。然而注意,这仅适用于数据字符。空白字符可能永远不会出现于模式中的特殊字符序列,例如引入条件子模式的序列 (?( 中间。 

A(PCRE_ANCHORED) 
如果设定了此修正符,模式被强制为“anchored”,即强制仅从目标字符串的开头开始匹配。此效果也可以通过适当的模式本身来实现(在 Perl 中实现的唯一方法)。 

当一个模式将被使用若干次时,为加速匹配起见值得先对其进行分析。如果设定了此修正符则会进行额外的分析。目前,分析一个模式仅对没有单一固定起始字符的 non-anchored 模式有用。 
D(PCRE_DOLLAR_ENDONLY) 
如果设定了此修正符,模式中的美元元字符仅匹配目标字符串的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前(但不会匹配任何其它换行符之前)。如果设定了 m 修正符则忽略此选项。Perl 中没有与其等价的修正符。 
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 合法性。

本文链接

分享到:
评论

相关推荐

    C#正则表达式语法大全

    #### 正则表达式模式修正符 模式修正符用于改变正则表达式的行为,例如`i`表示不区分大小写,`m`表示多行模式等。 ### C#中的正则表达式应用 在C#中应用正则表达式通常遵循以下几个步骤: 1. 创建一个`Regex`...

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

    下面我们将详细解释一些常见的正则表达式模式修正符: 1. **i (PCRE_CASELESS)**:这个修正符使正则表达式不区分大小写。当使用/i/时,模式中的字符会同时匹配对应的大写或小写字母。 2. **s (PCRE_DOTALL)**:...

    正则表达式模式修正符(/ies)

    模式修正符可以改变正则表达式的默认行为,以满足更复杂的文本处理需求。下面详细解释了在Perl兼容正则表达式(PCRE)中常用的模式修正符及其功能。 1. i (PCRE_CASELESS):不区分大小写的匹配。当使用这个修正符时...

    关于正则表达式的应用(正则表达式)

    点(.)在正则表达式中通常表示匹配任意字符,除了换行符,但可以通过转义(\)使其匹配字面的点。 2. 修正字符:星号(*)、加号(+)、问号(?)和花括号({})用于控制元字符的重复次数。星号表示零次或多次,...

    正则表达式教程之模式修正符使用介绍

    在正则表达式中,模式修正符(也称为修饰符或标志)是用于改变正则表达式行为的关键元素。它们是一些单个字母,可以添加到正则表达式的末尾来扩展其功能或调整匹配规则。模式修正符使得正则表达式更加灵活,能够适应...

    正则表达式

    其中,`gim`是模式修正符,分别代表全局匹配(Global)、忽略大小写(Insensitive)和多行匹配(Multiline)。 2.1.2. 使用字面量表示法,如`/字符串/`,这通常更简洁且常用。例如,`/x61/`表示小写字母"a",而`\u...

    正则表达式-随心查找随心所用

    如果输入符合正则表达式定义的模式,表单数据将被处理,否则会提示用户修正。这种逻辑判断能力使得正则表达式在数据验证和处理中扮演了重要角色。 要掌握正则表达式,不仅要理解基本语法和元字符,还需要通过实践来...

    [Python]网络爬虫(七):Python中的正则表达式教程.pdf

    - `***pile(pattern[, flags])`:编译正则表达式模式,可以配合标志位来改变匹配行为。 - `re.match(pattern, string)`:从字符串的开头开始匹配正则表达式,成功返回匹配对象,否则返回None。 - `re.search...

    PHP100视频教程 38:PHP中正则表达式学习及应用(三)

    + { } 重复匹配内容其次^ $ \b 边界处理第三| 条件处理第四最后按照运算顺序计算匹配2、正则表达式模式修正符i 正则内容在匹配时候不区分大小写(默认是区分的)m 在匹配首内容或者尾内容时候采用多行识别匹配S ...

    快速完全精通正则表达式

    - **正则表达式模式与匹配模式**:解释正则表达式中的模式是如何定义的,以及如何进行匹配操作。 ##### 共同的元字符与特性 - **字符表示**:特殊字符和转义序列。 - **字符类和类字符构造**:如 `[a-zA-Z]` 用来...

    正则表达式 所有特殊符号

    正则表达式是文本处理中最重要的工具之一,它可以用来匹配、验证和提取文本中的模式。正则表达式中有许多特殊符号,它们可以用来匹配不同类型的字符和模式。本文将对正则表达式中的特殊符号进行详细的介绍。 1. ...

    正则表达式测试工具

    正则表达式是一种强大的文本处理工具,用于在字符串中匹配、查找、替换或者提取符合特定模式的文本。在编程和数据分析领域,正则表达式扮演着至关重要的角色。Java作为广泛应用的编程语言,自然也提供了对正则表达式...

    正则表达式测试开发工具

    2. 快速调试:在编写复杂正则表达式时,实时测试可以迅速发现并修正错误。 3. 提高效率:避免在代码中反复试验,提升开发效率。 总的来说,正则表达式是编程语言中的强大工具,而"正则表达式测试开发工具"则为学习...

    正则表达式测试工具(ASP版本)

    4. **错误提示**:如果正则表达式有语法错误,工具会提供相应的错误信息,指导用户修正问题。 5. **学习资源**:对于初学者,此工具可以作为学习正则表达式的基础平台,通过实际操作和测试,加深对正则语法的理解。...

    php 正则表达式 ppt文档

    模式修正字符用于改变正则表达式的默认行为,如"i"使匹配不区分大小写,"m"让"^"和"$"分别匹配每一行的开头和结尾,"s"使"."能够匹配换行符等。 在PHP中,正则表达式有三个主要用途:匹配(用于从字符串中找到符合...

    正则表达式 调试工具

    分割功能则能根据正则表达式将文本切割成多个部分,这在处理分隔符不同的数据源时非常实用,比如处理CSV文件或日志数据,你可以自定义分隔符,将大段文本分解为可管理的数据行。 “正则表示式工具.exe”很可能就是...

    学习资料2 Perl_正则表达式最详细讲解

    在Perl中,匹配操作的表达式通常写作 `m/<regexp>/`,其中`<regexp>`是要匹配的正则表达式模式。为了简化语法,通常会省略`m`,直接使用`/<regexp>/`的形式。匹配操作的结果是布尔值,如果模式匹配成功,则返回真值...

Global site tag (gtag.js) - Google Analytics