gpt4 book ai didi

删除 1) 开头和结尾模式和 2) 如果没有结尾模式、开头模式和结尾之间的字符

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

使用两个链接来解决问题 gsub电话 - 出于好奇,我想知道我想要实现的目标是否有更短的正则表达式。 (使用来自 Remove the letters between two patterns of strings in R 的解决方案)
我想删除某个模式出现之间的所有字符,或者 - 如果没有“结束模式”,则在“开始”模式和结束之间。

foostring <- c("First test *** no asterisks at the end", 
"Second test *** asterisks in the middle *** something different",
"Third test *** more than one asterisk *** something different *** second asterisk ***",
"Fourth test *** asterisks followed by a special character ***_something different")

# desired output with chain of gsubs

gsub("\\*{3}.*$", "", gsub("\\*{3}.*?\\*{3}", "", foostring))
#> [1] "First test " "Second test something different"
#> [3] "Third test something different " "Fourth test _something different"

最佳答案

您可以使用

gsub("\\*{3}.*?(?:\\*{3}|$)", "",  foostring)
R online demo
TRE 正则表达式意味着:
  • \*{3} - 三个星号
  • .*? - 尽可能少的零个或多个字符
  • (?:\\*{3}|$) - 非捕获组匹配
  • \*{3} - 三个星号
  • | - 或
  • $ - 字符串的结尾。

  • 关于删除 1) 开头和结尾模式和 2) 如果没有结尾模式、开头模式和结尾之间的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64684573/

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