r语言 - 将值替换为括号内的值

  • 本文关键字:替换 r语言 r gsub
  • 更新时间 :
  • 英文 :


我已经提取了twitch streamers名称的数据集的第一列。有些streamer的拉丁用户名在括号中。

"TheRealKnossi"
"TheGrefg"
"YoDa"
"Pestily"
"<U+D55C><U+B3D9><U+C219> (handongsuk)"
"GamesDoneQuick"
"<U+8001><U+76AE> (mobilmobil)"

我想用括号内的值替换原来的值:

"TheRealKnossi"
"TheGrefg"
"YoDa"
"Pestily"
"handongsuk"
"GamesDoneQuick"
"mobilmobil"

我尝试使用gsub()

gsub("(?<=\()[^()]*(?=\))(*SKIP)(*F)|.", "", channels, perl=T)

问题是它适用于所有vector元素:

""
""
""
""
"handongsuk"
""
"mobilmobil"

您的问题是(?<=()[^()]*(?=))(*SKIP)(*F)匹配最内层圆括号(括号)之间的子字符串,不包括括号本身,并跳过匹配,然后.匹配任何字符(但换行字符,因为您在代码中使用PCRE正则表达式),因此gsub删除这些字符,但括号中的子字符串。

您可以使用tregex sub解决方案,如

sub(".*\(([^()]*)\).*", "\1", channels)

参见regex演示。细节:

  • .* -任何零或更多字符,尽可能多
  • ( - a ( char
  • ([^()]*) -第1组(1):除()以外的任何零或多个字符
  • ) - a ) char
  • .* -任何零或更多字符,尽可能多。

相关内容

  • 没有找到相关文章

最新更新