2009-12-29 91 views
3

这里是我一起工作的典型字符串:正则表达式替换未去掉空格

·         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 

对于一个未知的原因,取而代之的是更换·(不是句号,更像一颗子弹),但不能摆脱的foll的空间流,所以我的最终结果是:

 Identify & document site-related constraints and assumptions. 

当我使用在线测试仪(http://www.regular-expressions.info/javascriptexample.html)测试我正则表达式,它按预期工作。

我在做什么错?

+0

我不认为你的问题是与正则表达式,但与格式的文本。我正在玩一些东西,看看我能否实现它。我注意到这一点,因为excel trim函数在正则表达式运行后不会删除文本前面的空格 – 2009-12-29 19:08:52

回答

2

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


好,因为这仍然无法正常工作,最后\s*可能是一个不情愿的比赛,而不是一个贪婪的一个。您应该可以通过在表达式末尾添加\b来解决该问题。 \b指示单词边界(在单词之前或之后)。试试这个:

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

我试图删除括号以不存在,谢谢你的建议,尽管 – Seth 2009-12-29 18:51:01

+0

添加了\ b也没有工作。 的注意,但它确实工作(作为我的第一次尝试)http://www.regular-expressions.info/javascriptexample.html,但有趣的是,没有在http://rubular.com/工作(而我的第一一个),但不像其实任何实际问题:) – Seth 2009-12-29 18:59:42

+0

你确定这些空间是由'\ s'匹配吗?该空间实际上可能不是典型的选项卡或空间。它可能是一些奇特的格式,而正则表达式无法匹配。我建议将字段从Excel复制到文本编辑器中,保存,然后在十六进制编辑器中检查结果,以查看实际上导致该空间出现在点后面的字符。 – Welbog 2009-12-29 19:05:20

1

看起来答案已被接受,但在你的函数中运行这行代码也会照顾到你的问题。

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

谢谢,我会考虑在未来尝试这种方法 – Seth 2009-12-29 19:38:49