我使用regex101进行了测试,但我的代码在R中不起作用。我该怎么办?请帮帮我。
(?<=[).+?(?=])
我已经包含了>XP_002499978.1 predicted protein [Micromonas commoda]
类型的fasta文件,我需要>Micromonas_commoda_XP_002499978.1
类型的信息。
我需要删除和更改括号信息。
您可以使用
x <- ">XP_002499978.1 predicted protein [Micromonas commoda]"
x <- gsub("(?:\G(?!^)|\[)[^][\s]*\K\s+", "_", x, perl=TRUE) # Replace spaces in [ ]
## [1] ">XP_002499978.1 predicted protein [Micromonas_commoda]"
sub("^>(\S+).*\[([^][]*)].*", ">\2_\1", x) # Reformat the string
## => [1] ">Micromonas_commoda_XP_002499978.1"
这里有两个动作:
gsub("(?:\G(?!^)|\[)[^][\s]*\K\s+", "_", x, perl=TRUE)
用单个_
替换方括号内的所有空白块sub("^>(\S+).*\[([^][]*)].*", ">\2_\1", x)
重新格式化字符串
请参阅regex#1演示和regex#2演示。