r - R中的正则表达式,匹配字符串
问题描述
我有这样的字符串:“X96HE6.10nMBI_1_2”、“X96HE6.10nMBI_2_2”、“X96HE6.10nMBI_3_2”,我只想匹配下划线之间的数字 1、2 和 3,但没有它们(下划线)。我能想出的最佳解决方案是str_match(sample_names, "_+[1-3]?")
我非常感谢您的帮助。
解决方案
最简单的方法是使用sub
和反向引用:
数据:
d <- c("X96HE6.10nMBI_1_2", "X96HE6.10nMBI_2_2", "X96HE6.10nMBI_3_2")
解决方案:
sub(".*_(\\d)_.*", "\\1", d)
在这里,(\\d)
为单个数字定义捕获组(如果有问题的数字可以多于一位,请使用\\d+
),由s 替换参数\\1
中的反向引用“调用”sub
或者使用str_extract
正面环视:
library(stringr)
str_extract(d, "(?<=_)\\d(?=_)")
(?<=_)
是积极的向后看,可以表述为“如果你_
在左边看到......”
\\d
是要匹配的数字
(?=_)
是积极的前瞻,它可以被修饰为“如果你_
在右边看到......”
结果:
[1] "1" "2" "3"
推荐阅读
- javascript - jquery在页面加载之前更改当前页面url的一部分
- apache-spark - Spark 批处理或流式处理中的代理键
- android - #进口
找不到文件问题 React Native ios - python - Python 类作为类变量
- reactjs - react-apollo 在第一次渲染时没有触发查询
- xcode - 我无法在 PROD 的 Firebase/Crashlytics 中表示崩溃
- cocoa - 永久隐藏 NSTableView / NSOutlineView 中的行
- spring-boot - 带有 log4j2 的 Spring boot 2.1.x 应用程序似乎只启动了两次
- javascript - 如何将字符串张量与 tensorflow.js 连接起来?
- reactjs - 如何在 React 应用中使用 BehaviorSubject