(\w+)?
正则表达式和正则表达式之间有什么区别(\w*)
吗?
看起来一样,不是吗?
(\w+)?
并且(\w*)
都匹配相同(0..+inf 单词字符)
但是,有一点不同:
在第一种情况下,如果这部分正则表达式匹配""
,则不存在捕获组。在第二种情况下,它是空的。在某些语言中,前者表现为一段null
时间,后者应始终是""
。
例如,在 Javascript 中,
/(\w*)/.exec("") // ["", ""]
/(\w+)?/.exec("") // ["", undefined]
在 PHP ( preg_match
) 中,在前一种情况下,匹配数组中根本不存在相应的键:http: //3v4l.org/DB6p3#v430