vba excel中的正则表达式查找字符串中的组

时间:2009-09-16 21:31:53

标签: excel vba excel-vba

我目前正在开发一个vba项目,该项目有最终用户复制/粘贴长字符串 文本到工作表和代码来解析这些字符串中的垃圾数据 从他们那里组织起来。

字符串将始终具有不同的长度,并且数据之间具有不同的空格数。然而,它们将始终以相同的方式分组(即价格优先,一些空格,单位价格,一些空白区域和ID号)。是否有正则表达式只会将组(字母和数字)从空白中拉出来?

3 个答案:

答案 0 :(得分:2)

在VBA中:

Split(inputstring)

您还可以设置不同的分隔符,但默认情况下使用空格。

dupe有更多信息。

答案 1 :(得分:2)

如果您只想删除连续的空格分隔符,可以使用Text To Columns。

    MyRange.TextToColumns Destination:=MyRange.Cells(1), _
        DataType:=xlDelimited, _
        ConsecutiveDelimiter:=True, _
        Space:=True

然后你可以从目标范围的单元格中读取你的值,MyRange.Cells(1).CurrentRegion

答案 2 :(得分:1)

我不太清楚excel VBA中的语法是如何工作的,但是在python(类似PERL)中,最简单的正则表达式是:

\S+

这将匹配任何非空白字符序列,并且在python中我会使用它的findall方法从文档中获取所有匹配项。

如果excel VBA不是一个简单的方法,我会衷心地建议放弃excel for python(但我承认excel非常好且易于解析)。