如何在每个单词的开头添加一个字符?

时间:2020-09-21 16:51:57

标签: regex vba

我正在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

有人可以帮助我使用正确的正则表达式吗?

1 个答案:

答案 0 :(得分:4)

您不需要匹配\w+两端的单词边界,因为它们是隐式存在的。

此外,由于您可以始终在替换模式中使用$&后向引用来引用此整个匹配值,因此无需用捕获的括号括起整个模式。

最重要的一点:要在替换模式中使用文字美元符号,您需要使用另一个美元符号$$对其进行转义。

使用

reg_exp.Pattern = "\w+"

newString = reg_exp.Replace("dog cat 1 rrr", "$$$&")