从文档中,我看到了
$rex = qr/my.STRING/is;
print $rex; # prints (?si-xm:my.STRING)
Run Code Online (Sandbox Code Playgroud)
但我不知道该怎么理解(?si-xm:...).如果我打印qr/quick|lazy/,我得到了(?-xism:quick|lazy).这也是什么意思(?-xism:...)?
谢谢!
hob*_*bbs 11
就像一个注释一样,(?FLAGS:pattern)perl 5.14.0 的语法已经发生了变化,并且regex strinigification随之改变.引用来自perlre:
从Perl 5.14开始,在"?"之后立即出现"^"(插入符号或抑扬音).是一个相当于"d-imsx"的简写.标志("d"除外)可以跟随插入符号覆盖它.但减号不合法.
(d是5.14中的一组新标志之一,它影响正则表达式如何受Unicode影响; d默认情况下,表示基本上像旧的Perl版本一样).
通过添加(?^FLAGS:pattern)语法,正则表达式字符串化将更改为使用此语法,并且仅列出与默认值不同的标志.因此将qr/hello/字符串化为(?^:hello)(以前(?-xism:hello))并将其qr/hello/i字符串化为(?^i:hello)(以前(?i-xsm:hello)).
这种改变的好处是,如果perl 5.16添加一个新的q正则表达式修饰符(用于"在量子计算机上运行此匹配"),qr/hello/则不必更改为字符串化(?d-xismq:hello)- 它将能够保持(?^:hello)原样5.14.
| 归档时间: |
|
| 查看次数: |
3382 次 |
| 最近记录: |