regex - R:正则表达式环视以获取两个模式之间的内容

标签 regex r

我有一个带有如下字符串的向量:

x <-c('kjsdf_class-X1(z)20_sample-318TT1X.3','kjjwer_class-Z3(z)29_sample-318TT2X.4')

我想使用正则表达式来获取子字符串“class-”和“_sample”之间的内容(例如 x 中的“X1(z)20”和“Z3(z)29” ),并认为环视正则表达式((?=...),(?!...),...等等)可以做到这一点。但无法让它工作!

抱歉,如果这与其他问题类似,例如 herehere )。

最佳答案

这与您的想法有点不同,但它可以完成工作。

gsub("(.*class-)|(.)|(_sample.*)", "\\2", x)

逻辑如下,您有 3 个“组”字符串:

1) 以 class- 结尾的字符 .*

2) 个字符.

3) 以_sample开头的字符和后面的字符.*

从那些你想要保留第二个“集合”\\2的人中。

或者另一个可能更容易理解的:

gsub("(.*class-)|(_sample.*)", "", x)

获取以 class- 结尾的任意数量的字符以及后跟任意数量的字符的字符串 _sample,并将它们替换为 NULL 字符""

关于regex - R:正则表达式环视以获取两个模式之间的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31851324/

相关文章:

regex - 替换除指定字符的最后一个实例以外的所有实例

java - Drools 中的正则表达式

mysql - django:iregex 区分大小写

正则表达式位置不敏感

java - Java中的反向正则表达式

r - 使用长字符串按列对 R 数据帧进行排序

替换条件语句

R|ggplot2 : unordered stacked bar graph

r - 将字符串解析为日期时间时遇到问题

regex - 测试两列字符串以在 R 中逐行匹配