微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R:如何使用 stringr 提取子字符串作为输出来变异以字符串模式开头并以数字结尾的字符串列?

如何解决R:如何使用 stringr 提取子字符串作为输出来变异以字符串模式开头并以数字结尾的字符串列?

我正在创建一个要放入 mutate() 的小示例。不知道为什么这不起作用。

> str_extract("rs1234-<b>C</b>","^rs*\\d$")
[1] NA

如果您能指出我对语言的误解而不是仅仅提供解决方案,我会很棒。我希望得到“rs1234”。

解决方法

^rs*\d$ 正则表达式匹配

  • ^ - 字符串的开始
  • rs* - r 以及零次或多次出现的 s 字符
  • \d - 一个数字
  • $ - 字符串结束。

因此,您的模式匹配 rsssss1r3 等字符串。

你需要

str_extract("rs1234-<b>C</b>","^rs\\d+")

其中 ^rs\d+ 匹配字符串开头的 rs,然后匹配一位或多位数字。见this regex demo

但是如果我只想要“rs”和最后一个数字之间的子字符串。我该怎么办?

您将使用 rs.*\d

str_extract("rs1234-<b>C</b>","rs.*\\d")

其中 rs.*\d 匹配 rs,然后是除换行符以外的任意零个或多个字符,然后是一个数字。

注意:如果您还需要匹配行尾,则需要在最后一个模式前添加 (?s) 内联 DOTALL 修饰符。

this regex demo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。