regex - Excel VBA使用循环查找和替换字符串中的文本

标签 regex excel vba

我正在尝试替换模式 之间的字符串中的所有文本"&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/

    相关文章:

    java - 在 Java 中使用模式匹配

    java - Java 中的子字符串替换

    mysql - 使用 .FIELDS adodb 显示多个值

    excel - 从托管的 HP 质量中心导出错误跟踪数据的最佳方式是什么?

    excel - 在 JOIN 中使用 CASE 加速 SQL 查询

    excel - 当两者在同一工作簿中指定不同的工作表时,我可以将 With 嵌套在 With 中吗?编程语言

    vba - PDF生成期间运行时错误-2147467259

    java - 正则表达式模式 - 查询

    php - mysql php选择句子before after关键字

    c# - 将变体数组从 Excel VBA 传递到 WCF 函数