Regex 正则表达式匹配字符串之前和最近的第一个匹配项

Regex 正则表达式匹配字符串之前和最近的第一个匹配项,regex,Regex,我正在尝试使用正则表达式获取与名称“Daily”最接近的ID的编号。不过,我在这方面遇到了困难。 当我尝试正则表达式模式时,会得到以下结果之一: 从第一个ID出现到选择“每日”的所有内容 所有ID都是单独选择的(我可以指定匹配号以获得正确的ID,但问题是,如果在我需要的ID之前添加或删除ID,它将不再匹配) 找不到匹配项 我一直在试着测试我的正则表达式 链接中还有一个文本示例,我试图从中获取结果。我没有包括全文,因为那会有太多的信息。使用当前的正则表达式模式,我可以选择匹配编号3来获得所需的结果

我正在尝试使用正则表达式获取与名称“Daily”最接近的ID的编号。不过,我在这方面遇到了困难。 当我尝试正则表达式模式时,会得到以下结果之一:

  • 从第一个ID出现到选择“每日”的所有内容
  • 所有ID都是单独选择的(我可以指定匹配号以获得正确的ID,但问题是,如果在我需要的ID之前添加或删除ID,它将不再匹配)
  • 找不到匹配项
  • 我一直在试着测试我的正则表达式

    链接中还有一个文本示例,我试图从中获取结果。我没有包括全文,因为那会有太多的信息。使用当前的正则表达式模式,我可以选择匹配编号3来获得所需的结果,但问题是,可以在所需结果之间添加或删除ID

    我使用的另一个模式是
    },{.*

    我已经尝试了很多不同的选项,但没有一个是我想要的,除了一个我需要指定匹配号的选项,当我让正则表达式匹配所有的“id”:([0-9]*)模式时


    有人知道如何正确地获得所需的结果吗?

    我想您想要获得
    “id”:8
    。因此,您可以使用以下正则表达式:

    “id:([0-9]*)(?=[^\}]*?每日)


    为了澄清:我在正向前瞻中使用了一个否定字符类
    [^\}]*?
    ,任何数量的重复,尽可能少,因为在
    {content:[{“id”:7,“name”:“Hourly”,“someRandomText”:{“id”:1,“moreRandomText”},{“id”:8,“1/1”,“name”:“dailyRandom”:{“id”:1,“dailyRandomText”},{“id”:9,“1/1”,“name”:“9am”,“amRandom”:{“id”:1,“amRandomText”}}]}
    string.

    不要使用正则表达式,使用json解析器,查找名为
    的项目。@Jerry:示例文本在链接中。@CasimiretHippolyte奇怪,我第一次使用它时(选项卡仍然打开),我收到了该站点的欢迎信息…谢谢!我一直试图使用否定字符,但可能是错误的。您的答案适用于查找属于“Daily”的ID,也适用于查找“9am”的ID“当我在正则表达式中更改它时也是如此,这正是我想要的!非常感谢。我找到了这么多的文章和许多其他堆栈溢出的答案,但没有比您在这里解释的更简单的方法了。:-)