我一直在寻找解决方案两天。
以下是我的数据的样子和我想要实现的内容的示例:
dat <- c("f__dfty","fd_fgtekg","f_glgkt_s2","f_glgkt_s3","fthssfy_s2","fthssfy_s3","h__gkdnt_s2","sedfgrtsd")
dat <- c("f__dfty","fd_fgtekg","f_glgkt","f_glgkt","fthssfy","fthssfy","h__gkdnt","sedfgrtsd")
我需要在“_”之后删除所有内容,但如果下划线位于字符串的第2位和第3位,则不需要。并非每个字符串都有下划线。
谢谢!
答案 0 :(得分:2)
不确定字符串的长度,因此我假设可以使用任何长度。
<强>正则表达式强>
^((?:.{3})?[^_\s]+).*$
注意:您实际上可以使用^((?:.{3})?[^_]+).*$
,但由于我在regex101上的示例使用多行输入来简化操作,因此我发布了我在那里使用的代码。
<强>换人强>
$1
f__dfty
fd_fgtekg
f_glgkt_s2
f_glgkt_s3
fthssfy_s2
fthssfy_s3
h__gkdnt_s2
sedfgrtsd
aaaaaaa_aaaa
f__dfty
fd_fgtekg
f_glgkt
f_glgkt
fthssfy
fthssfy
h__gkdnt
sedfgrtsd
aaaaaaa
^
(?:.{3})?
_\s
(\s
中不存在的任何字符的1和无限制,以防止在regex101上的示例中出现换行符;如果循环遍历数组/列表,可以从代码中删除/ etc。)[^_\s]+
.*
$
$1