【问题标题】:Regex to match both float and scientific notation正则表达式匹配浮点数和科学记数法
【发布时间】:2021-07-21 15:53:04
【问题描述】:

我正在尝试匹配看起来像这样的字符串:

{"1": [123, 456, 789], "time": 1.234e-05}

{"1": [123, 456, 789], "time": 1.234}

这是我所拥有的:

\{"1": \[123, 456, 789], "time": [0-9.]*}

虽然此 Regex 匹配在 time 上具有浮点数的第二个字符串,但它无法捕获带有 e-... 的科学记数法。我应该如何更改我的正则表达式以匹配两者?

【问题讨论】:

  • 您的预期结果是什么。
  • 为什么要使用正则表达式来解析/匹配 JSON 内容?
  • @RobertHarvey 您的解决方案有效!谢谢!
  • @TimBiegeleisen 在我的情况下这是一个字符串化的 JSON

标签: python regex


【解决方案1】:

[0-9.]*(e\-[0-9]*)?

.e- 匹配列表中的单个字符.e-(区分大小写)

【讨论】:

    【解决方案2】:

    你可以使用一个或零个量词?

    >>> re.match('(\d+\.\d+(e-\d+)?)', '1.234').group(1)
    '1.234'
    >>> re.match('(\d+\.\d+(e-\d+)?)', '1.234e-05').group(1)
    '1.234e-05'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 2022-11-16
      相关资源
      最近更新 更多