我正在尝试替换模式 之间的字符串中的所有文本"&CC[号码]:[号码]"并将其替换为 "==" .
这是字符串。 "T &CC3:5 Q8 Party/ Self-Identify&CC6:8 Male&CC9:11 Female&CC12:15 Q1 Vote"
这就是我需要它看起来像 T &CC3:5==&CC6:8==&CC9:11==&CC12:15==
我知道我需要遍历这个字符串,但我不确定设置它的最佳方法。
Dim stringOne As String
Dim regexOne As Object
Set regexOne = New RegExp
regexOne.Pattern = "([Q])+[0-9]"
regexOne.Global = False
stringOne = "T &CC3:5 Q8 Party/ Self-Identify&CC6:8 Male&CC9:11 Female&CC12:15 Q1 Vote"
Debug.Print regexOne.Replace(stringOne, "==")
End Sub
我也探索过使用这个正则表达式
regexOne.Pattern = "([&])+[C]+[C]+[0-9]+[:]+[0-9]"
我计划最终将变量 stringOne 设置为
Range("A1").Text
最佳答案
您可以稍微简化模式并使用捕获组和正向前瞻
(&CC[0-9]+:[0-9]+).*?(?=&C|$)
解释
(
捕获组 1&CC[0-9]+:[0-9]+
匹配 &CC
1+ 位,: 和 1+ 位 )
关闭群.*?
匹配除换行符以外的任何字符 0+ 次非贪婪 (?=&C|$)
正向前瞻,断言右边是&C
或字符串的结尾 Regex demo
在替换中,使用第一个捕获组,后跟
==
关于regex - Excel VBA使用循环查找和替换字符串中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60513457/