我的格式有多个字符串:
"s mus_musculus.1 3003214 6673 + 195471971 ctctcctatggcggggaaggtgcctggatgtctaaagc-----------------ctgaa-atggggatctatcccagaagctgtgtagcttctgcctgtcccagaagctgtgttgtttct"
如何使用正则表达式来拉出第一个数字序列(即3003214),然后是#34; c,t,a,g和-"的最终序列?
我已经尝试了各种正则表达式构建器,但还是无法弄明白。
任何帮助将不胜感激!
答案 0 :(得分:1)
您可以尝试使用此代码:
text <- "s mus_musculus.1 3003214 6673 + 195471971 ctctcctatggcggggaaggtgcctggatgtctaaagc-----------------ctgaa-atggggatctatcccagaagctgtgtagcttctgcctgtcccagaagctgtgttgtttct"
number <- str_extract(text, "(?<=\\s)\\d+(?=\\s)")
string <- str_extract(text, "[\\w\\-]+(?=\\s*)$")
print(number)
print(string)
<强> As demonstrated on rextester.com 强>
用于提取数字:
(?<=\\s)
是一个积极的后视,告诉正则表达式无论数字是什么,它都应该以空格开头。这完全基于我的假设,即你想要的第一个数字是跟随并且前面有一个空格
\\d+
是您要捕获的一个或多个数字系列
(?=\\s)
是一个积极的预测,它告诉正则表达式,该数字后跟一个空格。
用于提取字符串:
[\\w\\-]+
表示一个或多个单词字符或短划线(成为捕获的字符串)
$
断言字符串末尾的位置。所以,无论应该匹配什么,都必须在最后。
答案 1 :(得分:-1)
试试这个
S <- "s mus_musculus.1 3003214 6673 + 195471971 ctctcctatggcggggaaggtgcctggatgtctaaagc-----------------ctgaa-atggggatctatcccagaagctgtgtagcttctgcctgtcccagaagctgtgttgtttct"
gsub(".*\\s(\\d+)\\s{2}.*\\s(\\D+)$", "\\1 \\2", S)
# "3003214 ctctcctatggcggggaaggtgcctggatgtctaaagc-----------------ctgaa-atggggatctatcccagaagctgtgtagcttctgcctgtcccagaagctgtgttgtttct"