3.正则表达式使用基础:括号(一)

2024年12月03日 05:27
有1个网友回答
网友(1):

有了分组,就可以准确表示“长度只能是m或者n”

之前用表达式[1-9]\d{14}(\d{2}[09-x])?匹配身份证号,思路是把18位号码多出的3位“合并”到匹配的15位号码的表达式中。还可以有其他方式。
15位身份证号就是[1-9]开头,之后是14位数字;18位身份证的开头也是[1-9]的数字,之后是16位数字,最后是[1-9x]?。只需要匹配两种表达式中的一个,就是合法身份证。那我们可以使用多选分组。

-关于多选分组,补充三点:
1.多选结构的一般表示法是(option1|option2),在多选结构中一般会同时使用()和竖线 |;但是如果没有括号,只出现竖线|,仍然是多选结构。

括号的用来规定整个多选结构的范围,如果没有出现括号,则整个表达式视为一个多选结构,所以 ab|cd 等价于 (ab|cd),建议多选结构都写出括号。

最好避免出现相同字符的多选结构,这样匹配会造成大量回溯,影响效率。

括号还可以嵌套,例如下面的例子,这种比较繁冗。分组的编号此时根据开括号的出现顺序来计数