我复制了一个语句,该语句旨在将字符串转换为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
的匹配将成功。否则,它将失败。