从字符串中删除不必要的字符

问题描述 投票:0回答:1
AB753217|Influenza A virus (A/African Stonechat/Vietnam/8/2009(H9N2)) |H9N2 |4 (HA)|2009-11-12

我想从更快的标题中删除一些字符,这样输出看起来像这样使用 r

AB753217|A/African Stonechat/Vietnam/8/2009|H9N2 |HA|2009-11-12

我试过使用

gsub()
但我的代码似乎是错误的:

df_1$isolate_name <- gsub("Influenza A virus \\(","", df_1$isolate_name) 
df_1$isolate_name <- gsub("\\)_segment.*gene", "", df_1$isolate_name)
r regex gsub
1个回答
0
投票

您可以删除

|
(
之间的所有内容不是
(
|
\\|[^(|]+\\(
,或
(
)
|
之间的所有内容不是
|
:
[()][^|]*\\|
并重新插入
|
.

s <- "AB753217|Influenza A virus (A/African Stonechat/Vietnam/8/2009(H9N2)) |H9N2 |4 (HA)|2009-11-12"

gsub("\\|[^(|]+\\(", "|", s) |> gsub("[()][^|]*\\|", "|", x=_) #In two separate steps

gsub("(?<=\\|)[^(|]+\\(|[()][^|]*(?=\\|)", "", s, perl=TRUE) #In one step using non consuming look ahead / behind and or |

#[1] "AB753217|A/African Stonechat/Vietnam/8/2009|H9N2 |HA|2009-11-12"
© www.soinside.com 2019 - 2024. All rights reserved.