Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用regex replace,如何在匹配模式中包含字符,但在要替换的值中排除字符_Regex_Vbscript - Fatal编程技术网

使用regex replace,如何在匹配模式中包含字符,但在要替换的值中排除字符

使用regex replace,如何在匹配模式中包含字符,但在要替换的值中排除字符,regex,vbscript,Regex,Vbscript,我使用以下方法替换testscript(简化)中的变量: Dim myDict 设置myDict=createobject(“scripting.dictionary”) mydict.add“subject”、“testobject” mydict.add“name”、“callsign” mydict.add“testobject callsign here”、“Chell” mydict.add“主题家乡”、“城市17” 类cls_simpleReplacer 私人住宅_ 公共子类 Set

我使用以下方法替换testscript(简化)中的变量:

Dim myDict
设置myDict=createobject(“scripting.dictionary”)
mydict.add“subject”、“testobject”
mydict.add“name”、“callsign”
mydict.add“testobject callsign here”、“Chell”
mydict.add“主题家乡”、“城市17”
类cls_simpleReplacer
私人住宅_
公共子类
Set re_u2;=new regexp
re_.global=true
re.pattern=“\{[a-zA-Z][\w]*\}”
端接头
公共函数解析(myString)
暗tStr
tStr=重新替换(myString,getref(“varreplace”))
“看看有没有变化
如果tStr myString那么
“看看我们能不能换更多的
tStr=解析(tStr)
如果结束
Parse=tStr
端函数
末级
专用函数varreplace(a、b、c)
varreplace=mydict.项目(中(a,2,len(a)-2))
端函数
MsgBox((新的cls_simpleReplacer).Parse(“难以置信。你,{{{subject}{name}here},一定是{subject homely here}的骄傲!”)
这将输出“难以置信”。你,切尔,一定是17号城市的骄傲。
在varreplace中,我必须去掉大括号
{}
,使其变得丑陋(例如,当我将模式更改为双大括号时,我必须更改varreplace函数)


是否有一种方法可以将大括号放在模式中,但不将其包含在替换字符串中?我想使用一个通用的
varreplace
函数,而不必担心变量标识符的格式和长度。

要去掉{},请将模式更改为

re_.pattern = "\{([a-zA-Z][\w ]*)\}"
“替换”功能用于:

Private Function varreplace(sMatch, sGroup1, nPos, sSrc)
   varreplace = mydict(sGroup1)
End Function

通过使用(普通)group capture()捕获大括号之间的序列并向函数中添加一个参数,可以立即访问字典键。

要去掉{},请将模式更改为

re_.pattern = "\{([a-zA-Z][\w ]*)\}"
“替换”功能用于:

Private Function varreplace(sMatch, sGroup1, nPos, sSrc)
   varreplace = mydict(sGroup1)
End Function

通过使用(普通)组捕获()捕获大括号之间的序列并向函数中添加参数,可以立即访问字典键。

字符串前后的示例是什么?此函数的输入和输出示例是什么?我在(源代码?)词典中没有看到任何大括号。如果我理解您想要完成的任务,忽略大括号(或至少模拟忽略大括号)应该不是问题。如果您向下滚动代码(它位于折叠的正下方),将显示一个前后文本的示例。字符串前后的示例是什么?此函数的输入和输出示例是什么?我在(源代码?)词典中没有看到任何大括号。如果我理解您想要完成的任务,忽略(或至少模拟忽略)大括号应该不是问题。如果您向下滚动代码(它位于折叠下方),则会显示一个前后文本的示例。效果非常好!非常感谢你!工作起来很有魅力!非常感谢你!