我有一个带有如下字符串的向量:
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” ),并认为环视正则表达式((?=...),(?!...),...等等)可以做到这一点。但无法让它工作!
最佳答案
这与您的想法有点不同,但它可以完成工作。
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/