美文网首页正则表达式 爬虫
正则表达式是我们认识世界的哲学。

正则表达式是我们认识世界的哲学。

作者: 9d760c7ce737 | 来源:发表于2019-04-23 16:24 被阅读229次

首先我回答了一个学员的提问,
有些GEO平台的探针转换比较麻烦
然后我为了使代码更加简洁,问了洲更一个问题,

如何获取括号中的内容,但不要返回括号。

我为什么这么问,因为我知道perl语言里面的正则表达式是可以实现这个功能的,而我曾经学过两个星期的perl语言。

这是他的回答,大概时间就是1个小时之内,包括了写帖子的过程。所以江湖人称“日更小王子”,更新速度极快。
【答果子问】R语言如何用正则表达式提取特定的字符串

看了回答,深刻的理解了这句话,

正则表达式是我们认识世界的哲学

决定把代码再精简一点。

观察之后总结模式

string = "Homo sapiens intraflagellar transport 80 homolog (Chlamydomonas) (IFT80), mRNA"

以这个为例,他里面有两个括号,我们要观察他,然后再把它抽象模式化。

  • 我们必须到找到一对括号,而且这个括号需要在逗号之前。
  • 因为括号是元字符,需要斜杠来转译,而斜杠也是元字符,需要另外一个斜杠来转译。
    现在这个模式可以写成这个样子
pattern = "\\(\\),"

那么找到了括号,这个括号里面是要有东西的,内容就是大小写字母和数字的结合[A-Za-z0-9],而且数量不限,所以,这个模式就变成了这样,* 符号代表是0或者多个

pattern = "\\([A-Za-z0-9]*\\),"

其中,我们想要把括号中的内容[A-Za-z0-9]*单独提取出来,那么需要给他增加一对括号,我们的模式就定型了

pattern = "\\(([A-Za-z0-9]*)\\),"

测试结果

现在可以测试一下stringr包中的str_view函数可以可视化匹配的结果

str_view(string,pattern)

使用str_match函数来匹配

str_match(string,pattern)

我们需要的括号内的内容在第二列,如果str_match中没有额外的括号,结果只会是一列

str_match(string,pattern)[,2]

[1] "IFT80"

既然我们明确地定义了做一件事情的步骤,那么我们就可以批量做。

library(dplyr)
library(stringr)
probeGenesymbol <- GPL4381 %>% 
  # 增加一个新的列gene_symbol,这个列获取了括号中的内容
  mutate(gene_symbol = str_match(.$GB_DEFINITION,pattern)[,2]) %>%
  # 过滤掉gene_symbol为空的行
  filter(gene_symbol != "") %>% 
  # 选出需要的列
  select(ID,gene_symbol,GB_DEFINITION)

现在这个代码足够简洁,更重要的是,由于我们升级了匹配模式,此时我们获得了跟多的结果,总共11399行。


既然开始接触字符串的处理以及正则表达式,我会系统地学习一下R语言的爬虫,把这两者更好地结合起来。

相关文章

  • 正则表达式是我们认识世界的哲学--转自果子学生信

    正则表达式是我们认识世界的哲学 原创 果子学生信 正则表达式是我们认识世界的哲学 首先我回答了一个学员的提问,有些...

  • 正则表达式是我们认识世界的哲学。

    首先我回答了一个学员的提问,有些GEO平台的探针转换比较麻烦然后我为了使代码更加简洁,问了洲更一个问题, 如何获取...

  • 浅谈对哲学的认识

    浅谈对哲学的认识 哲学,是所有学科的基础,是对其他所有学科高度抽象和概括的学科,是人们认识世界,改造世界的有力武器...

  • 我们认识的世界是我们的世界

    上周现在很火的互联网公司“今日头条”来我们学校宣讲。作为一个没有追求,一心想进一家工资高饭好吃离学校近的公司的吃货...

  • 科学遇上哲学

    科学应当"顶天立地",最终化身为实际工具服务于人类。哲学教我们认识自己,认识世界。科学遇上哲学,是科学探索必须要经...

  • 华与华方法汇总版 目录

    哲学是从最根本上入手,寻求最根本的解决方案。哲学就是世界观和方法论,包括你怎么认识世界,你怎么认识企业、你怎么认识...

  • 我们是怎样认识世界的?哲学史速读(中)

    中世纪哲学 中世纪哲学指的是西欧和中东在中世纪的哲学体系,其时间范围没有定论,大致上是从基督化的罗马帝国时期至文艺...

  • 我们是怎样认识世界的?哲学史速读(下)

    近代哲学 中世纪哲学的兴趣主要集中在超自然的事物上,而新时代的人们将目光从天堂转向尘世,自然科学逐渐位居前列,经院...

  • 我们是怎样认识世界的?哲学史速读(上)

    哲学是什么 英文维基百科说道:哲学是是研究普遍的、基础问题的学科,包括存在、知识、价值、理智、心灵、语言等领域。哲...

  • 对哲学的错误认识

    一、哲学是科学。 哲学是科学化的世界观、认识论、方法论的统称,是所有自然科学、社会科学的基础。这是我们从高中上哲学...

网友评论

    本文标题:正则表达式是我们认识世界的哲学。

    本文链接:https://www.haomeiwen.com/subject/zfyyhqtx.html