gpt4 book ai didi

regex - VBScript 的正则表达式负回溯替代方案

转载 作者:行者123 更新时间:2023-12-04 23:33:50 25 4
gpt4 key购买 nike

由于 VBScript 不支持后视,我正在寻找替代解决方案。

我有字符串 '\E\F\'。

我想用'~'替换\F\,但前提是它前面没有\E。

替换后,我希望 '\E\F\' 为 '\E\F\'。

如果字符串是 'randomText\F\',我希望它在替换后看起来像 'randomText~'。

解决方案:

我只是决定对它进行 StrReverse 并做一个负面的前瞻。这不是最优雅的解决方案,但在这种情况下似乎有效。

Dim regEx, str1
str1 = StrReverse("The quick \F\ brown \E\F\ dog.")
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Pattern = "\\F\\(?!E\\)"
regEx.Global = True
ReplaceTest = regEx.Replace(str1, "%")

最佳答案

VBScript doesn’t support look-behind assertions.但是试试这个:

(^.?|[^\\].|\\[^E])\\F\\

或这个:
(^.?|(?!\\E)..)\\F\\

$1~ 替换匹配项(第一个子匹配和 ~ )。

这里解释一下: 一般有两种情况: 如果 \F\前面没有或只有一个字符( ^.? ),一切正常。但是如果 \F\之前至少有两个字符,我们需要确保这些字符不是 \E .所以我们说,前面的两个字符要么是
  • 除了 \ 之外的任何字符后跟任意字符( [^\\]. ),或
  • \后跟除 E 之外的任何字符( \\[^E] )。

  • 该构造确保除 \E 之外的所有其他组合被允许。

    这同样适用于第二个表达式。但是这里我们使用否定前瞻断言来确保 \F\ 之前的两个字符不是 \E .

    关于regex - VBScript 的正则表达式负回溯替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1357769/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com