如何在符号"_"和"."之间提取子字符串.

Pau*_*l.j 3 r gsub

我有很多文件名,如下所示:

txt= "MA0051_IRF2.xml"
Run Code Online (Sandbox Code Playgroud)

我想提取IRF2"_"和"."之间的内容.我如何在R中执行此操作?

Fra*_*itt 11

要实现这一点,您需要一个正则表达式

  • 匹配_前面的(可选)任意字符串: .*
  • 匹配文字_: [_]
  • 匹配下一个(但不包括)下一个.并将其存储在捕获组号中.1:([^.]+)
  • 匹配文字.: [.]
  • 匹配后的(可选)任意字符串.:.*

在你打电话给gsub时,你就可以了

  • 使用我们在上一步中构建的正则表达式
  • 用第一个捕获组的内容替换整个字符串:( \\1我们需要转义反斜杠,因此双反斜杠)

例:

gsub(".*[_]([^.]+)[.].*", "\\1", "MA0051_IRF2.xml")
Run Code Online (Sandbox Code Playgroud)


dro*_*opy 6

stringr 包的另一种可能性:

 str_extract(x, perl("(?<=_)(.+)(?=\\.)"))
Run Code Online (Sandbox Code Playgroud)