【问题标题】:Regex to extract only digits after last whitespace正则表达式仅提取最后一个空格后的数字
【发布时间】:2021-09-10 22:58:56
【问题描述】:

我有一个如下所示的字符串:

"文字文字文字 $123,000,000 $456,000,000"

我能够找到另一个正则表达式解决方案来提取字符串末尾最后一个空格 ([^\s]+$) 之后的字符,但我无法弄清楚如何排除逗号和美元签名。

我想只提取数字,同时排除字符串中最后一个空格后面的任何其他非数字字符。而不是“$ 456,000,000”我想提取“456000000”

非常感谢您的任何指导。

【问题讨论】:

    标签: r regex


    【解决方案1】:

    我们可以在base R 中使用sub - 匹配所有字符.* 直到一个或多个空格(\\s+),替换为空白(""),然后用gsub 换行以删除@ 987654327@和,

    gsub("[$,]", "", sub(".*\\s+", "", "Text text text $123,000,000 $456,000,000"))
    #[1] "456000000"
    

    【讨论】:

    • 非常感谢!这将为我的组织节省大量时间。
    • 您知道一种在匹配文本的同时保留单词之间空格的方法吗?理想情况下,我想排除文本后的空格。预期输出:“文本文本”
    • @uberbot trimws() 是一个方便的基本函数,可以删除字符串开头和结尾的多余空格。
    • 谢谢@GregorThomas。我使用上面说明的方法 akrun 想出了一个解决方案。 trimws(gsub("[^a-zA-Z ] *", "", "文字文字文字 $123,000,000 $456,000,000")) [1] "文字文字文字"
    • @uberbot 你不需要gsubtrimwstrimws("Text text text $123,000,000 $456,000,000", whitespace = "\\s*\\$.*") [1] "Text text text"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2023-02-22
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多