当前位置:  开发笔记 > 编程语言 > 正文

理解R regexp中的先行

如何解决《理解Rregexp中的先行》经验,为你挑选了1个好方法。



1> Wiktor Strib..:

(?<=abc)(?=xyz)正则表达式只匹配的位置(地方字符串)是与abcxyz.它会找到匹配abcxyz但不会找到匹配,abcdefxyz因为xyz不会立即跟随abc.

(?=abc)(?=xyz),因为它在随后与应等于3个字母序列的字符串位置匹配模式将不会匹配任何东西abc,并xyz在同一时间,这是不可能的.

你在寻找什么

^(?=.*abc)(?=.*xyz)

或者,为了支持多行输入,添加DOTALL修饰符(?s)(这样也.可以匹配换行符):

(?s)^(?=.*abc)(?=.*xyz)

这些将匹配具有两个abcxyz任何顺序的字符串.

见R演示:

a <- c("abcxyz", "abcdef", "defxyz", "abcdefxyz", "xyzdefabc")
grep("^(?=.*abc)(?=.*xyz)", a, ignore.case=TRUE, perl=TRUE)
## => [1] 1 4 5

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有