Regex 关于正则表达式中嵌套组的说明

Regex 关于正则表达式中嵌套组的说明,regex,Regex,我有下面的正则表达式:“Jan 1987”,我想把它拼接成两组: 第一组应该匹配整个字符串 第二组应该只匹配年份 下面的表达式:(.+(\d+)创建第一个组,但第二个组仅匹配最后一个数字,如果我添加这样的空格(.+(\d+),则第二个组全年都正确匹配 有人能解释一下为什么吗 提前感谢。您最可能在此处使用的实际正则表达式如下所示: (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) 如果要访问整个匹配项,则这已经是整个字符串。根

我有下面的正则表达式:“Jan 1987”,我想把它拼接成两组:

  • 第一组应该匹配整个字符串
  • 第二组应该只匹配年份
  • 下面的表达式:
    (.+(\d+)
    创建第一个组,但第二个组仅匹配最后一个数字,如果我添加这样的空格
    (.+(\d+)
    ,则第二个组全年都正确匹配

    有人能解释一下为什么吗


    提前感谢。

    您最可能在此处使用的实际正则表达式如下所示:

    (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4})
    
    如果要访问整个匹配项,则这已经是整个字符串。根据您使用的正则表达式工具/语言,您还可以访问第0个捕获组。4位数年份将在第一个捕获组中可用


    此处最可能使用的实际正则表达式如下所示:

    (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4})
    
    如果要访问整个匹配项,则这已经是整个字符串。根据您使用的正则表达式工具/语言,您还可以访问第0个捕获组。4位数年份将在第一个捕获组中可用

    下面的表达式:(.+(\d+)创建第一个组,但第二个组仅与最后一个数字匹配,如果我添加这样的空格(.+(\d+),则第二个组与全年正确匹配

    有人能解释一下为什么吗

    是的,因为这个术语
    +
    是贪婪的,会一直匹配到
    最后一位数字,只有1才能满足整个匹配

    通过添加空间需求,它告诉引擎必须找到
    至少一个空格后跟一个数字,该数字在样本中只有一个位置,
    因此,在正确的组中匹配月份,同样
    这一年属于正确的一组

    下面的表达式:(.+(\d+)创建第一个组,但第二个组仅与最后一个数字匹配,如果我添加这样的空格(.+(\d+),则第二个组与全年正确匹配

    有人能解释一下为什么吗

    是的,因为这个术语
    +
    是贪婪的,会一直匹配到
    最后一位数字,只有1才能满足整个匹配

    通过添加空间需求,它告诉引擎必须找到
    至少一个空格后跟一个数字,该数字在样本中只有一个位置,
    因此,在正确的组中匹配月份,同样
    这一年属于正确的一组