Perl有一个很棒的修饰符
例如,
在R中的
/x
,可以在正则表达式中忽略空格。这并不是说它会忽略空格而匹配成功,而是在解释正则表达式时会省略空格,除非使用转义字符。例如,
^x[0-7][x-z][ABCpuq*]*$
可以等效地写为^x [0-7] [x-z] [ABCpuq*]*$
,在/x
模式下更易读。在R中的
grep
及其类似功能似乎没有这样的模式,但考虑到它们与Perl的兼容性,是否有选项可以传递?我尝试了几个选项,但都没有成功。> grepl( "^x[0-7][x-z][ABCpuq*]*$", "x5yuuA" )
[1] TRUE
> grepl( "^x [0-7] [x-z][ABCpuq*]*$", "x5yuuA" )
[1] FALSE
> grepl( "^x [0-7] [x-z][ABCpuq*]*$", "x5yuuA", perl=TRUE )
[1] FALSE
> grepl( "^x [0-7] [x-z][ABCpuq*]*$/x", "x5yuuA", perl=TRUE )
[1] FALSE
次要问题:R语言的Perl风格正则表达式与C PCRE库有多直接的依赖关系?似乎有一个PCRE_Extended
设置位,可以忽略空白。