这个符号在正则表达式中意味着"?:"是什么意思?

Jac*_*kWM 2 regex pattern-matching

我从RegexLib找到了以下正则表达式.

^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[13-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:
(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468]
[048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))
(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
Run Code Online (Sandbox Code Playgroud)

它来自http://regexlib.com/REDetails.aspx?regexp_id=113

我不明白在这个正则表达式中多次使用的符号"?:".似乎":"不在图表中

我熟悉正则表达式.任何人都可以用正则表达式和输入显示一个例子吗?

ste*_*ema 7

(?:...)只是一个非捕获组,表示该组匹配的字符串部分未存储且无法通过$1或访问\1

捕获组由开括号编号,因此

对于示例文本"Foobar test"

  1. 这是两个捕获组

    ^(\w+)\s*(\w+)
     1       2
    
    Run Code Online (Sandbox Code Playgroud)

    这将导致:

    $1 = "Foobar"
    
    $2 = "test"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 这里只有一个捕获组:

    ^(?:\w+)\s*(\w+)
               1
    
    Run Code Online (Sandbox Code Playgroud)

    这将导致:

    $1 = "test" 
    
    Run Code Online (Sandbox Code Playgroud)