(注意Bob之前的换行符)
my_string = "Alice & 1 & a \nBob & 2 & b"
gsub("(?m)(?<=& )(.+?)","(\\1)", my_string, perl=TRUE)
> "Alice & (1) & (a) \nBob & (2) & (b)"
如何将正则表达式调整为仅将以Alice开头的行中的条目括起来?
我尝试过的^A
的所有变体都捕获了Alice本身,或者只捕获了Alice之后群组的第一次出现。
编辑:预期输出
"Alice & (1) & (a) \nBob & 2 & b"
答案 0 :(得分:1)
现在确定这是多么有效,但您始终可以将其应用于包含每行单独条目的向量
l <- strsplit(my_string, "\n")[[1]]
paste(ifelse(substr(l, 1, 5) == "Alice", gsub("(?<=& )(.+?)(?m)","(\\1)", l, perl=TRUE), l), collapse = "\n")
# [1] "Alice & (1) & (a) \nBob & 2 & b"