的VBScript +正则表达式

的VBScript +正则表达式

问题描述:

 
Dim sString 

sString = "John;Mary;Anne;Adam;Bill;Ester" 

是否有一个正则表达式我可以用它来检索从上面的列表如下:的VBScript +正则表达式

  1. 约翰(;在名称末尾)
  2. 安妮(;在起止)
  3. 酯(;开头)

我目前使用下面的正则表达式为每个:

 
1. Joh.* 
2. .*An.* 
3. .*st.* 

但是,上述检索整个字符串,而不是我想要的值。我如何获得正确的值?

代码:

 
Dim oRegex : Set oRegex = New RegExp 
oRegex.Global = False 
oRegex.IgnoreCase = False 

'John 
oRegex.Pattern = "Joh.*" 

Set oMatch = oRegex.Execute(sString) 
sName = oMatch(0) 

上面的代码检索,而不是只有约翰整个字符串。同样的问题与其他:(

+1

是例如oRegex.Pattern =“John;”,那么有一个原因,就是说,如果你知道你想要的确切名字,为什么不把它们当作模式使用呢?另外,“。*”匹配所有的东西,这就是为什么你会得到完整的字符串。 – dmb 2010-04-09 15:05:21

为什么不直接用这个?

Dim nameArray = Split(sString,";") 
+0

感谢您的快速响应Eric。 我不确定,因为字符串是巨大的,并使用拆分会导致一个很大的性能开销.. – Karthik 2010-04-09 14:38:36

+0

不像正则表达式的开销。 – Eric 2010-04-09 15:28:36

更简单的方法,在你的字符串做split(),然后遍历列表得到你的东西,如

s = split(sString,";") 
for i=Lbound(s) to Ubound(s) 
    ' get your names 
next 
+0

谢谢ghostdog74。我不确定,因为字符串很大,使用Split会导致很大的性能开销。 – Karthik 2010-04-09 14:38:57

+0

它不应该是一个很大的性能开销。 – ghostdog74 2010-04-09 15:12:16