php—PCRE正则表达式内部选项设置

伊谢尔伦
发布: 2016-11-21 17:21:24
原创
1711人浏览过

pcre_caseless, pcre_multiline, pcre_dotall, pcre_ungreedy,pcre_extra, pcre_extended and pcre_dupnames 等模式修饰符设置可以在模式内部通过一个 perl 选项字符序列来设置, 语法为:(?修饰符),可用的修饰符有:

Internal option letters

i    for PCRE_CASELESS    

m    for PCRE_MULTILINE    

s    for PCRE_DOTALL    

立即学习PHP免费学习笔记(深入)”;

x    for PCRE_EXTENDED    

U    for PCRE_UNGREEDY    

达芬奇
达芬奇

达芬奇——你的AI创作大师

达芬奇 50
查看详情 达芬奇

X    for PCRE_EXTRA    

J    for PCRE_INFO_JCHANGED    

比如,(?im) 设置表明多行大小写不敏感匹配。同样可以用它来取消这些设置, 比如 (?im-sx) 设置了PCRE_CASELESS,PCRE_MULTILINE, 但是同时取消了 PCRE_DOTALL 和 PCRE_EXTENDED。 如果一个字母即出现在 - 之前, 也出现在 - 之后,这个选项被取消设置。

当一个选项在模式的最上级(也就是说不在子组中)时, 这个改变会影响模式中剩余部分。比如 /ab(?i)c/ 仅仅匹配 ”abc” 和 ”abC”。 这个形式在 PCRE 4.0(PHP 4.3.3) 中被改变。在此之前的版本中, /ab(?i)c/ 行为和 /abc/i 完全一致。

如果一个选项在子组中设置,产生的影响是不同的。这是 perl 5.005 中行为的一个变种。 一个选项在子组内部设置,仅仅改变子组中剩余的部分, 因此 (a(?i)b)c 仅仅匹配 ”abc” 和 ”aBc” (假设没有使用 PCRE_CASELESS 选项)。 这就意味着选项在模式的不同位置可以造成不同的影响。 在同一个子模式中, 一个分支的选项设置回穿透到后面剩余的其他分支中去。 比如 (a(?i)b|c) 匹配”ab”, “aB”, “c” 和 ”C”。 尽管在匹配 ”C” 时第一个分支会在选项被设定前就被丢弃。 这是因为选项的设定是在编译期确定的,否则可能会带来非常怪异的行为。

PCRE 专用选项 PCRE_UNGREEDY 和 PCRE_EXTRA 可以和 perl 兼容选项以同样的方式来改变, 分别使用字母 U 和 X. (?X) 标记设定有些特殊,它必须出现在任何其他特性之前, 最好放在最开头的位置。

相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号