考虑正则表达式\d*
如果我尝试将其与字符串JJJ123
匹配,则Vertica的正则表达式函数表示它与开头的宽度为零的字符串匹配。
如果我在matlab中尝试,则会报告从字符1
开始的匹配。
Vertica文档说它的正则表达式引擎是PCRE。我在matlab上找不到多少,但我发现它与perl的相似。
对于类似perl的正则表达式引擎,哪种行为更为标准?
答案 0 :(得分:3)
Matlab的regexp
有一个emptymatch
选项,用于控制是否允许整个正则表达式匹配空字符串。它默认为关闭(“noemptymatch
”)。请参阅help regexp
。
Vertica在开头匹配0长空字符串是我所知道的大多数正则表达方言的正常行为,包括任何类似Perl的方言。
要获得与Vertica相同的行为,它可以匹配0长度的字符串,请在'emptymatch'
调用中传递regexp
选项。同时传递'once'
以防止它匹配字符串中每个字符之间的空格。
[a,b,c,d] = regexp('JJJ123', '\d*', 'emptymatch', 'once')