我正在学习正则表达式的高级用法,并注意到许多帖子使用(*SKIP)或(*F)在其中.
我发布了一个问题,其中的想法是匹配没有yellow但blue只有brown在蓝色之后存在的行.正确的答案是:
.*yellow.*(*SKIP)(*F)|^.*\bblue\b(?=.*brown).*$
Run Code Online (Sandbox Code Playgroud)
我也尝试了下面的外观表达式但是并没有适用于所有情况:
^((?!yellow).)*blue(?=.*brown).*$
Run Code Online (Sandbox Code Playgroud)
我不知道这些(*SKIP)(*F)标志,所以问题是,这些标志如何工作?他们在做什么?还有其他这样的旗帜吗?
谢谢.
当使用基础R串的功能,如gsub和grep,是否有任何缺点,因为习惯问题,总是指定perl = TRUE?这有什么缺点吗?
有了perl=TRUE,表达式可以做更多的事情(例如,你可以使用前瞻或后面的断言,或者你可以进行大小写转换\\U),并且性能也更快,正如文档所述.
那么,有什么缺点吗?这perl = TRUE不是默认的向后兼容性吗?当perl = TRUE时,我是否应该注意可移植性问题?