非捕获元讲解
正则表达式语法中,有一种称为”非捕获元“。是基于子表达式的语法规则;
| 举例1 | (pattern) |
匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到。 |
| 举例2 | (?:pattern) |
匹配 pattern 但不获取匹配结果。 |
| 举例3 | (?=pattern) |
正向肯定预查(look ahead positive assert)。这是一个非获取匹配。 |
| 举例4 | (?!pattern) |
正向否定预查(negative assert)。这是一个非获取匹配。 |
| 举例5 | (?<=pattern) | 反向(look behind)肯定预查,与正向肯定预查(?=pattern)类似,只是方向相反。这是一个非获取匹配。 |
| 举例6 | (?<!pattern) | 反向否定预查,与正向否定预查(?!pattern)类似,只是方向相反。这是一个非获取匹配。 |
举例1:
表达式: /win(1|2|3)/g
字符串: "win4win3win2"
共找到 2 处匹配:
win3
win2
举例2:
表达式: /win(?:1|2|3)/g
字符串: "win4win3win2"
共找到 2 处匹配:
win3
win2
类似于表达式:/win1|win2|win3/g 或者是 /win(1|2|3)/g
举例3:正向 肯定
表达式: /win(?=1|2|3)/g
字符串: "win4win3win2"
共找到 2 处匹配:
win
win
能够匹配到win3 win2的win,不能匹配win4的win;
举例4:正向 否定
表达式: /win(?!1|2|3)/g
字符串: "win4win3win2"
共找到 1 处匹配:
win
能够匹配到win4的win,不能匹配win2 win3的win;
举例5:反向 肯定
表达式: /(?<=1|2|3)win/g
字符串: "4win3win2win"
共找到 2 处匹配:
win
win
能够匹配到3win 2win的win,不能匹配4win的win;
举例6:反向 否定
表达式: /(?<!1|2|3)win/g
字符串: "4win3win2win"
共找到 1 处匹配:
win
能够匹配到4win的win,不能匹配2win 3win的win;

759

被折叠的 条评论
为什么被折叠?



