【问题标题】:Replace text between two symbols across the full string [closed]替换整个字符串中两个符号之间的文本[关闭]
【发布时间】:2019-06-25 12:43:29
【问题描述】:

如何使用 R 正则表达式将分号和逗号内的字符串替换为“X”。

输入:
My name : Harry, Age : 23, Address : London,

输出:
My name : X, Age : X, Address : X,

【问题讨论】:

  • 请向我们展示您的尝试并添加相关编程语言或工具的标签。

标签: r regex stringr


【解决方案1】:
gsub(": .*?,", ": X,", "My name : Harry, Age : 23, Address : London,")

#[1] "My name : X, Age : X, Address : X,"

【讨论】:

  • 虽然这个答案有效,虽然它不是最好的问题,但我觉得答案仍然可以做一些解释。在 R 的正则表达式帮助指南中,? 的使用被解释为“前面的项目是可选的,最多匹配一次”。我不明白这如何导致.* 部分将自身限制为最短选项。
  • @AaronHayman 添加问号有效地导致.* 不愿意而不是贪婪。有一个很好的讨论here
【解决方案2】:

你可以使用 gsub

gsub( "[a-zA-Z0-9]+[,]",": X, ","我的名字:Harry,年龄:23​​,地址:Londo")

【讨论】:

  • 上述代码的输出为:"My name : X, Harry, Age : X, 23, Address : X, Londo"
【解决方案3】:

您可以使用gsub,这将执行贪婪搜索替换。

gsub(':[^,]+,',': X,',"My name : Harry, Age : 23, Address : London,")
## [1] "My name : X, Age : X, Address : X,"

正则表达式将查找与第一个参数中的描述匹配的序列。

[^,]+ 匹配不包含逗号的序列,这确保只有下一个逗号可以被视为整个序列的一部分。

【讨论】:

    猜你喜欢
    • 2020-06-26
    • 1970-01-01
    • 2016-01-30
    • 2022-01-06
    • 1970-01-01
    • 2021-07-23
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多