【发布时间】:2019-06-25 12:43:29
【问题描述】:
如何使用 R 正则表达式将分号和逗号内的字符串替换为“X”。
输入:My name : Harry, Age : 23, Address : London,
输出:My name : X, Age : X, Address : X,
【问题讨论】:
-
请向我们展示您的尝试并添加相关编程语言或工具的标签。
如何使用 R 正则表达式将分号和逗号内的字符串替换为“X”。
输入:My name : Harry, Age : 23, Address : London,
输出:My name : X, Age : X, Address : X,
【问题讨论】:
gsub(": .*?,", ": X,", "My name : Harry, Age : 23, Address : London,")
#[1] "My name : X, Age : X, Address : X,"
【讨论】:
? 的使用被解释为“前面的项目是可选的,最多匹配一次”。我不明白这如何导致.* 部分将自身限制为最短选项。
.* 不愿意而不是贪婪。有一个很好的讨论here。
你可以使用 gsub
gsub( "[a-zA-Z0-9]+[,]",": X, ","我的名字:Harry,年龄:23,地址:Londo")
【讨论】:
"My name : X, Harry, Age : X, 23, Address : X, Londo"
您可以使用gsub,这将执行贪婪搜索替换。
gsub(':[^,]+,',': X,',"My name : Harry, Age : 23, Address : London,")
## [1] "My name : X, Age : X, Address : X,"
正则表达式将查找与第一个参数中的描述匹配的序列。
[^,]+ 匹配不包含逗号的序列,这确保只有下一个逗号可以被视为整个序列的一部分。
【讨论】: