2010-04-09 50 views
0
 
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

回答

2

爲什麼不直接用這個?

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

感謝您的快速響應Eric。 我不確定,因爲字符串是巨大的,並使用拆分會導致一個很大的性能開銷.. – Karthik 2010-04-09 14:38:36

+0

不像正則表達式的開銷。 – Eric 2010-04-09 15:28:36

1

更簡單的方法,在你的字符串做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