regEx替换不按预期删除空格

时间:2009-12-29 18:36:45

标签: regex vba excel-vba excel

以下是我正在使用的典型字符串:

·         Identify & document site-related constraints and assumptions.

我想在“识别”之前擦除那个字符串以摆脱一切......

我写了一个函数来获取字符串并将其擦除,这里是:

Function dataScrub(dataIn As String)
Dim dataIn_orig As String
dataIn_orig = dataIn

'BEGIN : create and set regular expression
Dim regEx
Set regEx = CreateObject("vbscript.regexp")
With regEx
        .IgnoreCase = True
        .MultiLine = False
        .Pattern = "^[\s]*[·]+[\s]*"
        .Global = True
End With

dataScrub = regEx.Replace(dataIn_orig, "")
End Function

由于一个未知的原因,替换正在替换·(不是一个句子,更像是一个子弹)但没有摆脱它后面的空格,所以我的最终结果是:

      Identify & document site-related constraints and assumptions.

当我使用在线测试器(http://www.regular-expressions.info/javascriptexample.html)测试我的regEx时,它按预期工作。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

[\s]匹配\s。尝试使用没有方括号的普通旧\s


好吧,因为那仍然不起作用,最后\s*可能是一个不情愿的匹配而不是贪婪的匹配。您应该可以通过在表达式的末尾添加\b来解决此问题。 \b表示单词边界(单词之前或之后)。试试这个:

^\s*[·]+\s*\b

答案 1 :(得分:1)

看起来已经接受了答案,但在您的函数中运行这行代码也会解决您的问题。

Cells.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart