VBScript RegEx组与后向引用问题匹配

时间:2012-06-06 01:33:05

标签: regex vbscript web-config

我的web.config中有一行,如下所示

<clientDependency loggerType="xxx.ClientDependencies.Logger,StrattonWebShared" version="144">

我要做的是编写一个脚本来检查我的代码库是否有修改,然后将clientDependency模块版本更新为1(如果找到的话)。所以将版本增加一个的代码位如下

Set clientDepRegExp = new RegExp
    clientDepRegExp.IgnoreCase = True
    clientDepRegExp.Global = True
    clientDepRegExp.Pattern = "(<clientDependency.*version=\"")(\d+)(\"".*)"

    '1 = open file for reading
    Set clientDependencyConfigFile = fileSystemObject.OpenTextFile(targetFile, 1)

    fileContents = clientDependencyConfigFile.ReadAll

    clientDependencyConfigFile.Close

    fileContents = clientDepRegExp.Replace(fileContents, "$1" & CInt("$2") + 1 & "$3")

我的问题在于最后一行。 $2是版本号,而CInt("$2") + 1正在给我3(所以2 + 1就是这样)。如果我只使用"$2",则返回144(请参阅版本号的第一行)。所以我的问题是,如果我做一个快速的算术内部替换我应该怎么做?

提前感谢您提供的任何提示和建议

1 个答案:

答案 0 :(得分:1)

更改您的代码:

Set clientDepRegExp = New RegExp
Set fso = New Scripting.FileSystemObject
With clientDepRegExp
    .IgnoreCase = True
    .Global = True
    .Pattern = "(<clientDependency[^<>]*?version="")(\d+)\b"
    fileContents = fso.OpenTextFile(targetFile).ReadAll
    tmp = .Replace(reftext, "$2")
    fileContents = .Replace(reftext, "$1" & CStr(Val(tmp) + 1))
End With

希望这项工作。