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都通过两种模式捕获空字符串。我从来没有意识到不匹配的组会导致未定义
,而不是空字符串(因为我总是只检查真实性)