首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R: gsub/只替换关键字出现后出现的那些事件

问R: gsub/只替换关键字出现后出现的那些事件
EN

Stack Overflow用户
提问于 2019-10-25 16:33:15
回答 1查看 235关注 0票数 0

我只想替换在特定关键字/模式之后出现的字符串,而不是之前出现的字符串。换句话说,在关键字模式第一次出现之前什么也不做,然后开始将gsub放在关键字模式的右侧。见下文:

代码语言:javascript
复制
gsub("\\[|\\]", "", "ab[ cd] ef keyword [ gh ]keyword ij ")

实际结果:"ab cd ef关键字gh关键字ij“

预期结果:"ab cdasfg ]] ef关键字gh关键字ij“

编辑以修正结果。我不想删除‘关键字’

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-25 16:58:21

您可以使用\G在关键字之后获得连续匹配。使用\K可以忘记匹配的内容,并将下面的[或]替换为空字符串。

代码语言:javascript
复制
(?:^.*?keyword\b|\G(?!^))[^\[\]]*\K[\[\]]

各部分

  • (?:非捕获群
    • ^.*?keyword匹配直到第一个关键字
    • |或
    • \G(?!^)在上一次比赛结束时断言位置,而不是在开始时获得连续匹配。

​

  • )闭非捕获群
  • [^\[\]]*\K匹配0+时间而不是[或],忘记使用\K匹配的是什么
  • [\[\]]匹配[或]

Regex演示 x- R演示

您的代码可能看起来像

代码语言:javascript
复制
gsub("(?:^.*?keyword\\b|\\G(?!^))[^\\[\\]]*\\K[\\[\\]]", "", "ab[ cd] ef keyword [ gh ]keyword ij ", perl=T)

注意,对于类Perl的正则表达式,在末尾使用perl=T。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58562449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档