删除数字前的模式并保留这些数字

标签 r regex

我有一个字符串

text = "Math\n      \n      \n        600 rubles / 45 min."
text2 = "Math\n      \n      \n        in a group"

我想更换 \n \n \n" "仅当数字跟随时。
因此,我想要:
"Math 600 rubles / 45 min."
"Math\n      \n      \n        in a group"

我试过 gsub("\n \n \n [\\d]", " ", text) ,但它也替换了第一个数字。

最佳答案

您可以使用匹配 3 次 \n 的模式。后跟 6+ 个空格,然后捕获数字并替换为对组 1 的反向引用:

gsub("(?:\n {6,}){3}(\\d)", " \\1", text)

R demo

详情
  • (?:\n {6,}){3} - 连续出现 3 次:
  • \n - 换行
  • {6,} - 6 个或更多空格
  • (\\d) - 第 1 组(引用替换模式中的 \1):任何数字。
  • 关于删除数字前的模式并保留这些数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47512066/

    相关文章:

    php - 在 PHP 正则表达式中使用 ^ 和 $ 出现意外结果?

    java - java Matcher 越界异常

    html - 如何在 Shiny 的应用程序的 navbarPage 中设置 tabPanel 标题的颜色?

    r - 结合选择和变异

    r - 基于R中给定条件的矢量填充真或假,无循环

    c# - 使用正则表达式从 C# 中基于另一个字符串的字符串中提取一个单词

    javascript - 正则表达式匹配模式或空值

    r - 作为条件面板条件的数字输出值

    r - 将 11 GB .csv 文件加载为 big.matrix 对象

    regex - 正则表达式在Powershell中不起作用