在正则表达式中,(\w+)?
和(\w*)
有什么不同吗?
看起来是一样的,不是吗?
发布于 2013-01-17 14:37:31
(\w+)?
和(\w*)
都匹配相同(0..+inf word字符)
但是,有一个细微的区别:
在第一种情况下,如果正则表达式的这一部分与""
匹配,则捕获组将不存在。在第二种情况下,它是空的。在某些语言中,前者表现为null
,而后者应始终为""
。
例如在Javascript中,
/(\w*)/.exec("") // ["", ""]
/(\w+)?/.exec("") // ["", undefined]
在PHP (preg_match
)中,在前一种情况下,匹配数组中只缺少相应的键:http://3v4l.org/DB6p3#v430
https://stackoverflow.com/questions/14373310
复制相似问题