【问题标题】:In regular expressions What is variable-length lookbehind-assertion?在正则表达式中什么是变长lookbehind-assertion?
【发布时间】:2021-07-02 12:57:09
【问题描述】:

我复制了一个语句,旨在将字符串转换为 Octave 中的骆驼大小写。代码如下。

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

但我收到此警告消息。

警告:正则表达式:任意长度的查找模式仅适用于 最长支持 10

在互联网上寻找答案,似乎是关于可变长度lookbehind-assertion的问题,但我不明白它,在我阅读的所有答案中,人们都在谈论他们所了解的一切。

【问题讨论】:

    标签: regex matlab octave lookbehind


    【解决方案1】:

    任意长度的模式只支持长度不超过 10”消息意味着 \s+ 内的模式 (?&lt;=...) positive lookbehind 可以匹配以开头的未知数量的空白字符1. 由于没有定义上界,所以认为是“任意长度的look behind pattern”

    由于消息说这些模式“仅支持长度为 10”,这意味着您的正则表达式引擎将 (?&lt;=\s+) 视为 (?&lt;=\s{1,10}),这可能足以您的大多数用例。无论如何,这里不需要+(?&lt;=\s)\S完全等价于你想要的。 (?&lt;=\s+)(?&lt;=\s) 是等价的,因为如果在当前位置的左边有一个或多个或只有一个空格,它们都是一样的。如果有一个或两个或三个空格字符,\S 的匹配将成功。否则,它将失败。

    【讨论】:

      猜你喜欢
      • 2012-07-23
      • 1970-01-01
      • 2014-11-04
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多