【问题标题】:Regular Expression between 2 strings (Numeric Only )2 个字符串之间的正则表达式(仅限数字)
【发布时间】:2017-03-22 04:14:39
【问题描述】:

我有这段代码需要在 "media_count": 和 , 之间做一个正则表达式。 这意味着我应该只得到 370606 , 168, 250 , 67

{"position": 0, "hash": {"media_count": 370606, "name": "fsdfs", "id": 17843681947041535}}, {"position": 34, "hash": {"name": "fsdfsd", "media_count": 168, "id": 17842650601031598}}, {"hashtag": {"name": "fsdfsd", "media_count": 250, "id": 17843868538053719}, "position": 17},  {"position": 7, "hashtag": {"name": "dgdfg", "id": 17854319125027806, "media_count": 67}}, 

任何人都会感激不尽

【问题讨论】:

  • 试试"media_count":\s*(\d+)\s*,
  • 我看不出有什么理由反对一个好的 json 解析器。

标签: regex


【解决方案1】:

首先,你没有提到语言,所以我会给你一个 perl 答案。
你可以看到一个关于多个匹配的问题here
其次,对于 perl,您的正则表达式将如下所示:
@mc = $your_string =~ /\"media_count\"\:\s*(\d+)/g
我的尝试:
test > perl -p -e '@list = $_ =~ /\"media_count\":\s*(\d+)/g; print "@list \n" ' somefile 370606 168 250 67

【讨论】:

    【解决方案2】:

    在看到您的代码后感谢您的帮助。我最终使用 (?

    【讨论】:

    • 如果你的目标只是全匹配,没有分组,你可以试试(?<="media_count":\s)\d+\s*
    【解决方案3】:
    "media_count":(?<=)\s*(\d+)\s*
    

    example

    第 1 组将包含您要查找的数字

    或仅完全匹配“media_count”之后的数字:

    (?<="media_count":\s)\d+\s*
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 2014-10-01
      相关资源
      最近更新 更多