正则表达式?:和? 的区别

admin 31 0

正则表达式中的“?:”和“?”具有不同的含义和用途。

“?:”是非捕获组的表示方法,它的作用是匹配一个字符但不保留该字符,在匹配时忽略这个分组的存在,不会将这个分组的字符加入到结果中,也不会给这个分组分配一个组编号,在正则表达式中,可以使用(?:)来表示非捕获组,用于匹配字符串中的手机号码,但只需要匹配到第4位数字,不需要保留前面的3位数字。

而“?”在正则表达式中表示匹配前面的子表达式零次或一次,当“?”紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的,非贪婪模式尽可能少地匹配所搜索的字符串,而默认的贪婪模式则尽可能多地匹配所搜索的字符串。

“?:”和“?”在正则表达式中具有不同的用途和含义,需要根据具体的使用场景选择合适的符号。