Cloud2016
Mastering Regular Expressions o'reilly Jeffrey E. F. Friedl
Mastering Python Regular Expressions packt open source Authors Félix López Víctor Romero
虽然我还没学好,但这两本书解决了我不少疑惑
Cloud2016
Mastering Regular Expressions o'reilly Jeffrey E. F. Friedl
Mastering Python Regular Expressions packt open source Authors Félix López Víctor Romero
虽然我还没学好,但这两本书解决了我不少疑惑
Cloud2016 我主要就是看 R 自己的帮助文档 ?regex
,十几年来看了大概得有一二百遍吧,这文档并不长,但想背下来也不太容易,有些细节还是得到了用的时候再查一遍,比如中括号内哪些字符是特殊字符。再就是现场测试,多造一些例子自己跑一跑、确认一下表达式是否写得对。具体的操作函数我用的最多的是 grep()
、gsub()
、gregexpr()
和 regmatches()
。
我很久以前写过一点入门的东西:https://bookdown.org/yihui/r-ninja/text-data.html
dapengde 前几天开会期间我还跟 @haozhu233 说我的好些包背后的黑魔法都不能直视,要是你们知道了那些包都是建立在正则表达式的基础上,可能会导致用户大恐慌。例如 knitr/bookdown/blogdown 本质上都是在捣鼓正则表达式。
yihui 我不恐慌。以前用 vim 时,用错过正则,造成灾难性后果,那也没至于死人。
正则这把双刃剑太锋利,逻辑上稍有不慎就会自残。它的确太训练逻辑思维能力了。
对了,推荐给 Cloud2016 一个正则表达式的 cheatsheet,设为墙纸,天天洗脑,十年之后,必有所成:
<https://resources.rstudio.com/contributed-cheat-sheets/regex-cheatsheet>
我用正则还比较多,不过并没有找书来看
正则表达式我觉得更像是肌肉记忆,得靠不断重复练习才能掌握。正则表达式跟markdown类似,核心的东西一样,但在不同的语言里(python,perl,bash,R)里都有细微区别,看书的话真的很难掌握要领。
基本的东西的话在 https://regexr.com/ 练练手,具体问题可以搜爆栈网
关键是在平时有意识地用多用它。
最近我的几个用正则表达式的案例供参考:
批量删出blogdown帖子里yaml头部中,tags中的日文标签
RNA序列聚类结果,整理成表格
>Cluster 0
0 15679nt, >SB1234_Contig35475... at +/99.99%
1 15436nt, >SB1234_Contig35476... at +/99.62%
2 15764nt, >Contig18540... *
3 15438nt, >Contig39392... at +/99.69%
4 15679nt, >comp263440_c8_seq4... at -/99.99%
5 15667nt, >comp263440_c8_seq6... at -/99.99%
>Cluster 1
0 15684nt, >SB1234_Contig35474... at +/99.98%
1 15685nt, >Contig11682... *
2 15684nt, >comp263440_c8_seq3... at -/99.98%
3 15672nt, >comp263440_c8_seq5... at -/99.97%
去爆栈网挑战一些regex问题,比如
https://stackoverflow.com/questions/51395291/subset-a-part-of-a-string-before-a-certain-pattern/51395429#51395429
https://stackoverflow.com/questions/52640644/r-dplyr-and-string-values-how-to-split-and-get-the-second-element-vapply-sappl/52640894#52640894
lovebluesky yihui dapengde tctcab 感谢各位的指导
@lovebluesky 书好厚,我打算先看点薄的,先收藏了,以后看
yihui 没想到正则表达式这么强,我特意翻了 blogdown 的源码
dapengde 我明天就把它打印出来贴桌上
tctcab 同事今天给我介绍了 https://regex101.com/ 感觉也不错,都是神器啊
各位给的信息量都很足,我要闭关学学了
Cloud2016 真的,就跟@yihui 大佬说的一样,估计不少用户对用regex感到恐慌。不过也可以理解,毕竟这东西容易出错。可很多情况下你要去写比较复杂的字符处理,尤其是那种几个语言之间交流的,不用正则表达式能用啥。。
上周看了Miles在rstudio conf的演讲,里面说的就很好,“让用户感觉像魔法的包并不一定需要特别干净(原文smell good,翻不准)“。总之别因为这东西看着像黑魔法就不去用呀
r里面正则的套路还是很多的,gsub等是一套, gsub等把perl=T
打开又是一套,stringr的那些用起来有时候也有微妙的区别,所以还是在regexr和R里要多试试,真是不出来就去爆栈上问吧 哈哈哈
还有这个addin,看着不错,你可以试试
https://github.com/gadenbuie/regexplain
我经常去Hadley的stringr包主页上学习正则,归纳的挺系统的
https://stringr.tidyverse.org/articles/regular-expressions.html
鬼知道一两个月后还知道自己写了啥