正则表达式匹配第一次出现之前和最接近字符串

时间:2015-03-27 12:53:28

标签: regex

我正在尝试使用正则表达式来获取最接近名称"每日"的ID的编号。尽管如此,我还是遇到了困难。 当我尝试正则表达式模式时,我得到以下结果:

  1. 从第一次出现ID到#34;每日"被选中。
  2. 所有ID都是单独选择的(我可以指定匹配编号以获得正确的ID,但问题是如果在添加或删除ID之前它不再匹配我需要的一个)。
  3. 找不到匹配项。
  4. 我一直在尝试regexr来测试我的正则表达式。

    在链接中也是我尝试获取结果的文本示例。我没有包含整篇文章,因为信息太多了。使用当前的正则表达式模式,我可以选择匹配编号3来获得我需要的结果,但问题是可以在期望的结果之间添加或删除ID。

    我使用的另一种模式是}},{.*?"id":([0-9]*).*?Daily,该模式会产生正确的ID,但问题是我还需要获取名称为" 9 am"还有其他人。改变"每日"在那个模式中" 9 am"返回"每日"的ID而不是#34; 9 am"。

    我已经尝试了很多不同的选项,但是没有一个能够找到我想要的东西,期待我需要指定匹配编号的那个,当我让正则表达式匹配所有" id" :([0-9] *)模式。

    有谁知道我如何才能正确地获得所需的结果?

1 个答案:

答案 0 :(得分:3)

我想你想得到"id":8。所以,你可以使用这个正则表达式:

"id":([0-9]*)(?=[^\}]*?Daily)

请参阅example

澄清一下:我在正面预测中使用否定字符类[^\}]*?,尽可能少地重复任意次数,因为在{{每日“之前不应该有}个符号1}}字符串。

相关问题