在正则表达式中,什么是可变长度的lookbacking断言



我复制了一个语句,该语句旨在将字符串转换为Octave中的Camel Case。代码如下。

function camelStr = stringcamelcase (str)
camelStr = lower(str)
idx = regexp([' ' camelStr], '(?<=s+)S', 'start') -1;
camelStr(idx) = upper(camelStr(idx));
end

但我收到了这个警告信息。

警告:regexp:任意长度的查找模式仅适用支持长达10

在互联网上寻找答案,这似乎是一个关于可变长度回溯断言的问题,但我不理解,在我读到的所有答案中,人们都像他们所理解的那样谈论它。

">任意长度的向后看模式仅支持长度高达10";消息意味着(?<=...)正后方查找中的s+模式可以匹配以1开头的未知数量的空白字符。由于没有定义上界,因此它被认为是";任意长度的向后看模式">

由于消息说这些模式是">仅支撑至长度10";,这意味着正则表达式引擎将(?<=s+)视为(?<=s{1,10}),这对于大多数用例来说可能已经足够了。无论如何,这里不需要+(?<=s)S完全等同于您想要得到的。(?<=s+)(?<=s)是等效的,因为如果在当前位置的左侧有一个或多个空白,或者只有一个空白,那么它们都是相同的。如果有一个、两个或三个空白字符,则S的匹配将成功。否则,它将失败。

相关内容

  • 没有找到相关文章

最新更新