我正在VBA中使用RegExp
对象。我有一个字符串,想在每个单词的开头添加一个$
字符。
例如,如果我的字符串是:
dog cat 1 rrr
我想将其转换为:
$dog $cat $1 $rrr
在RegExp
中,我了解到您应该使用$1
而不是\1
来表示捕获组。
我尝试了以下VBA代码。
Dim newString as String
Dim reg_exp As New RegExp
reg_exp.Pattern = "(\b\w+\b)"
reg_exp.IgnoreCase = True
reg_exp.Global = True
newString = reg_exp.Replace("dog cat 1 rrr", "\$$1")
在替换字符串中,我使用了\\$$1
,其中\\$
表示$
,而$1
表示捕获组。
结果是:
\\$1 \\$1 \\$1 \\$1 \\$1
有人可以帮助我使用正确的正则表达式吗?
答案 0 :(得分:4)
您不需要匹配\w+
两端的单词边界,因为它们是隐式存在的。
此外,由于您可以始终在替换模式中使用$&
后向引用来引用此整个匹配值,因此无需用捕获的括号括起整个模式。
最重要的一点:要在替换模式中使用文字美元符号,您需要使用另一个美元符号$$
对其进行转义。
使用
reg_exp.Pattern = "\w+"
和
newString = reg_exp.Replace("dog cat 1 rrr", "$$$&")