如何将此正则表达式转换为R正则表达式和正则表达式R用法



我使用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演示。

最新更新