【问题标题】:R How to extract everything in all paragraphs after a specific word?R如何在特定单词之后提取所有段落中的所有内容?
【发布时间】:2021-11-24 19:04:49
【问题描述】:

您好,我正在寻找一个 R 代码来删除特定术语之后所有段落中的每个单词。 寻找“谈话:”并替换所有内容直到新段落的示例。 我尝试了正则表达式并花时间但无法成功(“fjeaofiz”始终存在)。

x <- c("12 3456 789", "Talk: zpfozefpozjgzigzehgoi oezjgzogzjgoezjgo \r fjeaofiz ", "", NA, "Talk: 667")
stri_sub_all(x, stri_locate_all_regex(x, "^Talk:.*\r", omit_no_match=TRUE)) <- "***"
print(x)

我的输出应该是:

x <-"12 3456 789", "***", "", NA, "***"

有什么帮助吗?

【问题讨论】:

  • 预期输出是什么?
  • 我编辑并添加了输出,谢谢

标签: r regex string


【解决方案1】:

如果目标是删除字符串 Talk 之后出现的任何内容,包括 Talk,那么这应该可行:

sub("^Talk.*", "***", x)
[1] "12 3456 789" "***"         ""            NA            "***"  

【讨论】:

    【解决方案2】:

    你需要使用

    stri_sub_all(x, stri_locate_all_regex(x, "(?s)^Talk:.*", omit_no_match=TRUE)) <- "***"
    

    这里的重点是删除\r(你的正则表达式只匹配到CR char之前的行的一部分)并使用(?s).*模式来匹配整个字符串的其余部分,因为stringi正则表达式默认情况下,包使用 ICU 正则表达式风格,. 不匹配换行符(如 CR 和 LF)。 (?s) 启用 . 匹配换行符。

    可能更简单的方法是使用

    sub("^Talk:.*", "***", x)
    

    这里使用了默认的 TRE 正则表达式库,. 在此正则表达式风格中默认匹配换行符。

    【讨论】:

    • 多谢解释,我两个都用
    猜你喜欢
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    相关资源
    最近更新 更多