27

(\w+)?正则表达式和正则表达式之间有什么区别(\w*)吗?

看起来一样,不是吗?

4

1 回答 1

34

(\w+)?并且(\w*)都匹配相同(0..+inf 单词字符)

但是,有一点不同:

在第一种情况下,如果这部分正则表达式匹配"",则不存在捕获组。在第二种情况下,它是空的。在某些语言中,前者表现为一段null时间,后者应始终是""

例如,在 Javascript 中,

/(\w*)/.exec("")  // ["", ""]
/(\w+)?/.exec("") // ["", undefined]

在 PHP ( preg_match) 中,在前一种情况下,匹配数组中根本不存在相应的键:http: //3v4l.org/DB6p3#v430

于 2013-01-17T06:37:31.140 回答