使用gsub移除字符串单/双方括号并调整字段顺序的问题
解决方法
你可以用一个正则表达式一次性处理两种括号情况,核心是精准捕获需要保留的内容,丢弃括号及后续无关文本,再交换内容位置:
对应的R代码如下:
df$clean_names <- gsub("^([^,]+),\\s*([^\\[\\s]+).*$", "\\2 \\1", df$names)
代码说明:
^([^,]+):捕获字符串开头到逗号前的所有内容(第1组,即原逗号前的名字),\\s*:匹配逗号及逗号后可能存在的任意空格([^\\[\\s]+):捕获左括号[和空格之前的非空白字符(第2组,即原逗号后需要保留的核心内容).*$:匹配从当前位置到字符串结尾的所有内容(包含各种括号及后续文本,直接丢弃)\\2 \\1:将捕获的两组内容用空格拼接,交换位置得到目标格式
测试结果:
针对你的示例数据:
Name, Example [A] [[UK
Name2, AnotherExample [[USA
处理后输出:
- Example Name
- AnotherExample Name2
如果第二行期望输出是AnotherExample Name(即需要去掉逗号前名字里的数字),可以调整正则对第1组做额外处理:
df$clean_names <- gsub("^([^,0-9]+)[0-9]*,\\s*([^\\[\\s]+).*$", "\\2 \\1", df$names)
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

