【问题标题】:Extract number after $ sign regex$符号正则表达式后提取数字
【发布时间】:2019-06-27 20:23:01
【问题描述】:

我有一个从单元格中提取数字的 Excel 函数,但我想更改模式以在 $ 符号后提取数字。

数字的范围为 1-100000。它也可以有小数点(例如 1.1000)。数字永远不会是负数。数字将始终跟随 $ 符号。

例如。 Text text $50.35

我需要得到50.35

我需要帮助编写 .pattern 部分。我尝试过并且一直失败。

非常感谢您的帮助。

【问题讨论】:

  • 单元格的内容实际上是文本还是货币值?
  • 你可以试试 (?<=\$)[1-9][0-9]*(?:\.\d+)*.? 它确实从 1 开始,但它不占最大 100000 regex101.com/r/ulbtml/1
  • 单元格内容为文本。
  • 除了$ 和数字之外,单元格中还有其他内容吗?在这种情况下,SUBSTITUTE 可以完成这项工作
  • 数字总是最后的吗?

标签: regex excel


【解决方案1】:

您可以匹配美元符号并捕获组中的数字。

\$([1-9][0-9]{0,4}(?:\.\d+)?|100000(?:\.0+)?)(?!\S)

说明

  • \$匹配美元符号
  • (抓包组
    • [1-9][0-9]{0,4} 匹配 1 - 99999
    • (?:\.\d+)? 可以选择匹配一个点和 1 个以上的数字
    • |或者
    • 100000(?:\.0+)? 匹配 100000 和可选的点和 1+ 次 0
  • )关闭捕获组1
  • (?!\S) 断言右边的不是非空白字符

Regex demo

【讨论】:

    【解决方案2】:

    我的猜测是,这个表达式或稍微修改过的版本可能在这里有效:

    \$(10{5})$|\$([1-9]\d{1,4}(\.\d+)?)$|\$([1-9](\.\d+)?)$
    

    如果您可能感兴趣,在这个demo 中解释了表达式。

    我的假设是:

    • 我们想通过 $100000 而失败 $100000.0

    • 字符串将以我们想要的数字结尾。

    【讨论】:

      猜你喜欢
      • 2016-12-12
      • 2011-12-05
      • 1970-01-01
      • 2021-12-17
      • 2020-09-08
      • 1970-01-01
      • 2015-12-27
      • 2021-09-09
      • 2022-01-17
      相关资源
      最近更新 更多