Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式差异:(\w+;)?和(\w*)_Regex_Difference - Fatal编程技术网

Regex 正则表达式差异:(\w+;)?和(\w*)

Regex 正则表达式差异:(\w+;)?和(\w*),regex,difference,Regex,Difference,正则表达式中的(\w+)和(\w*)之间有什么区别吗 看起来是一样的,不是吗 (\w+)?和(\w*)都匹配相同的(0..+个inf字字符) 但是,有一点不同: 在第一种情况下,如果正则表达式的这一部分与“匹配,则不存在捕获组。在第二种情况下,它是空的。在某些语言中,前者显示为null,而后者应始终为“” 例如,在Javascript中 /(\w*)/.exec("") // ["", ""] /(\w+)?/.exec("") // ["", undefined] 在PHP(preg\u

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

看起来是一样的,不是吗

(\w+)?
(\w*)
都匹配相同的(0..+个inf字字符)

但是,有一点不同:

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

例如,在Javascript中

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

在PHP(
preg\u match
)中,在前一种情况下,matches数组中根本不存在相应的键:

它看起来是一样的,除非您关心
null
(\w+)”
相比,这似乎有些奇怪。你在哪里看到的?是否有指向外部资源的链接?我在我的公司项目中看到了
(\w+)
,“捕获
会导致空字符串或空字符串?@Cozzamara在第一种情况下,不会捕获空匹配。由哪个引擎捕获?Perl和SED都通过两种模式捕获空字符串。我从来没有意识到不匹配的组会导致
未定义
,而不是空字符串(因为我总是只检查真实性)