R vs sed正则表达式贪婪
发布时间:2020-12-14 00:29:39 所属栏目:Linux 来源:网络整理
导读:我不太明白为什么这不会导致“测试”并且会理解一个解释: a = "blah test"sub('^.*(test|$)','1',a)# [1] "" 将它与sed表达式进行比较: echo 'blah test' | sed -r 's/^.*(test|$)/1/'# testecho 'blah blah' | sed -r 's/^.*(test|$)/1/'# Fwiw,以下
我不太明白为什么这不会导致“测试”并且会理解一个解释:
a = "blah test" sub('^.*(test|$)','1',a) # [1] "" 将它与sed表达式进行比较: echo 'blah test' | sed -r 's/^.*(test|$)/1/' # test echo 'blah blah' | sed -r 's/^.*(test|$)/1/' # Fwiw,以下实现了我想要的R(并且相当于上面的sed结果): sub('^.*(test)|^.*',a) 解决方法
正则表达式引擎的开头匹配字符串末尾的所有字符,即贪婪.*,然后它尝试匹配(test | $),即字符串文字’test’或字符串的结尾.由于.*的第一个贪婪匹配匹配所有字符,它反向引用一个字符,然后再次尝试匹配(test | $),这里$匹配字符串的结尾.
使您的匹配结果成为行尾字符 我认为sed使用POSIX NFA试图在Alternation中找到最长的匹配,这与R不同,R似乎使用了传统的NFA (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 哪里可以为linux上的C程序存储资源
- 如何恢复这个Linux分区?
- linux – 如何使用Glade / GtkD和D编程语言显示Hello Worl
- linux – 与任何东西都不匹配的Glob扩展到自身,而不是什么都
- 从sysadmin的角度来看,Linux和FreeBSD系统的主要区别是什么
- vagrant up报错 Warning: Authentication failure. Retryin
- linux – / bin / sh:变量和直接命令之间的区别
- linux – 是否有用于字节计算的命令行计算器?
- linux下比ack速度更快的代码搜索工具the_silver_searcher
- Linux vim编辑器常用命令