如何只删除单括号并保留成对的

亲爱的老师们/各位 R 用户,大家好,

我最近开始认真学习正则表达式,最近我遇到了一个案例,我们只想保留成对的括号()并省略未配对的括号。这是我的示例数据

structure(list(t1 = c("Book (Pg 1)", "(Website) Online)", "Journal: 2018)", 
"Book1 (pg 2) book 3 (pg4)  something)")), class = "data.frame", row.names = c(NA, 
-4L))

想要的输出是这样的:

structure(list(t1 = c("Book (Pg 1)", "(Website) Online", "Journal: 2018", 
"Book1 (pg 2) book 3 (pg4)  something")), class = "data.frame", row.names = c(NA, 
-4L))

我自己已经设法用下面的代码来做到这一点,但我认为肯定有一种更有效的方法来解决它。事实上,我想学习其他获得类似结果的方法:

test$t2 <- gsub("([(]?.*[)]?s+[^(]w+)[)]|([(].*[)])", "12", test$t1)
test

                                     t1                                   t2
1                           Book (Pg 1)                          Book (Pg 1)
2                     (Website) Online)                     (Website) Online
3                        Journal: 2018)                        Journal: 2018
4 Book1 (pg 2) book 3 (pg4)  something) Book1 (pg 2) book 3 (pg4)  something

我正则表达式的另一个问题是,当我换的地方RHSLHS|它不会导致预期的结果,我很好奇为什么。如果您能就解决此类问题给出一些解释,我将不胜感激。

非常感谢您提前。

以上是如何只删除单括号并保留成对的的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>