正则表达式替换(Excel VBA) - 从组中删除空格

时间:2017-12-27 16:33:03

标签: regex excel-vba vba excel

如何删除返回字符串中有问题的空格? 我在Excel中使用单元格函数,我有一个字符串,我在其中找到特定文本并将其移动到同一字符串中的另一个位置。

我的结果很好,除了它们包含一个额外的空格,我无法弄清楚如何删除。我相信这对你来说很简单,但我是正则表达和学习的新手。

示例文本字符串:

999999 - Blah Blah Blah 8888 blah blah

期望的结果是:

999999 (8888) - Blah Blah Blah blah blah

我的实际结果是(注意第3个Blah的额外空格)

999999 (8888) - Blah Blah Blah  blah blah

这是我目前的相关代码:

strPattern = "^(\d{6} )(\- )(\D+)(\d{4})"
strReplace = "$1($4) $2$3"

有人可以通过我的strPattern定义和/或strReplace定义帮助我学习如何处理这个问题吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以调整正则表达式模式,以便在可选的空白字符之前匹配尽可能少的非数字符号:

^(\d{6} )(- )(\D*?)\s*(\d{4})
                ^^^^^^

请参阅regex demo

<强>详情

  • ^ - 字符串的开头
  • (\d{6} ) - 第1组:六位数
  • (- ) - 第2组:连字符和空格
  • (\D*?) - 第3组:除了数字之外的任何0 +字符,但尽可能少,因为*?量词是懒惰的(量化的模式仅在后续模式失败时才尝试和扩展匹配)
  • \s* - 0+空白字符
  • (\d{4}) - 第4组:四位数。