gpt4 book ai didi

r - 在 r 和正则表达式中,如何在排除某些混合条件的情况下检测字符

转载 作者:行者123 更新时间:2023-12-04 07:19:12 25 4
gpt4 key购买 nike

我试图在我的字符串中检测一些点 (.) 并将它们替换为单词旁边的相同点,例如“。”变成“.AAA”。但有一些条件我想避免替换:

  • 如果在点之前有一个空格然后是单个字符
  • 如果点位于两个连字符 (-) 之间

  • 例如,如果输入是:
    string <- "first. - second. - third. 4."
    我想要的输出是:
    "first.AAA - second. - third.AAA 4."
    对于第一个条件,我可以弄清楚:
    str_replace_all("[^ [A-Z19a-z]\\.]([\\.])","\\1AAA")
    但是在阅读有关解决第二个条件并将两者混合在一起的前视和后视时感到困惑。

    最佳答案

    如果通过单个字符表示包括换行符在内的任何字符,则可以使用

    gsub("(?s)(?:\\s.\\.|-[^-]*-)(*SKIP)(?!)|(\\.)", "\\1AAA", x, perl=TRUE)
    regex demo .如果您需要精确“任何字符”条件,请替换 \\s.\\. 中未转义的点与适当的构造。
    细节:
  • (?s) - 一个 dotall s使点匹配任何字符的标志,包括换行符
  • (?:\s.\.|-[^-]*-) - 一个非捕获组匹配
  • \s.\. - 一个空格,任何一个字符 , 一个点
  • | - 或
  • -[^-]*- - 一个连字符,零个或多个字符,而不是一个连字符和一个连字符

  • (*SKIP)(?!) - 跳过当前位置失败的匹配并触发从失败位置搜索下一个匹配
  • | - 或
  • (\.) - 第 1 组:一个点。
  • 关于r - 在 r 和正则表达式中,如何在排除某些混合条件的情况下检测字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68612942/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com