2013-07-26 43 views
0

我希望此模式能夠找到發生在&標記之間的任何字母。 標籤之間的數字量將是可變的數量(有時5,有時5-4,有時9)基本上我們總是希望標籤之間的數字。有時我的文本文件可能會在標籤之間出現字母或空格。在特定標記之間匹配字母字符和空格

我想我的腳本要做的是計算標籤之間找到字母[a-zA-Z)的次數。如果找到0,那麼它會報告0

我目前的測試文本文件中有2個郵編標籤... 兩者只有標籤之間的數字(這是好的) 腳本或下方的圖案應該顯示0發現(因爲沒有字母) 但是它報告回2.如果它是倒退。 如果我在其中一個標籤中放置了一個字母,下面的這個圖案將會報告1. 就好像圖案是向後的。如果我將其更改爲[^ 0-9],則無論是否存在字母或數字或兩者,都不會發現任何內容。 。

Set rgxp3 = New Regexp 
rgxp3.Pattern = "<ZipCode>([^a-zA-Z]*)</ZipCode>" 
rgxp3.IgnoreCase = False 
rgxp3.Global = True 
Set matches3 = rgxp3.Execute(contents) 
+0

你說你想匹配字母字符,但你的示例字符串只有數字和連字符。當你的模式和樣本字符串之間有個案不匹配時,你也正在使你的正則表達式區分大小寫。請退後一步,通過應用此正則表達式來描述您嘗試解決的實際問題。 –

+0

Ansgar我已經更新了我目前的模式。我只想在郵政編碼標籤之間找到大寫或小寫字母。我正在創建的腳本確保格式是正確的。格式在標籤之間不能有字母。所以當我運行這個腳本時,我會希望搜索在標籤之間出現0次出現的字母。如果腳本報告了一個事件,那麼我知道我的長文本文件中的某處,其中一個zipcodes標記之間有一個字母。數字和連字符都可以。謝謝你耐心等待我。 – user2150312

回答

0

根據您的上一條評論,您希望找到在標記值的任何位置都有字母的匹配項,例如, <zipcode>123c456</zipcode>。試試這個:

str = "..." 

Set re = New RegExp 
re.Pattern = "<zipcode>(.*?[a-z].*?)</zipcode>" 
re.Global = True 
re.IgnoreCase = True 

For Each m In re.Execute(str) 
    WScript.Echo m.SubMatches(0) 
Next 
+0

這是正確的表達需要謝謝。不知道我是否應該在這裏,但我做了「(。*?[a-zA-Z]。*?)」這將檢查大小寫&空格。再次感謝! – user2150312

0

一般在正則表達式分組是用來說明(內提取份〔使用括號()]

所以解決這個可編寫一個正則表達式的字符串,如;

<zipcode>([\da-zA-Z]{5}-[\da-zA-Z]{4})</zipcode> 

(此正則表達式字符串查找5個字母數字字符,後跟連字符( - ),後跟4個字母數字字符(我不是美國人,所以我不清楚郵政編碼的可能格式,但您大概可以通過Google搜索找到該部分的正則表達式)。

從我們的表達中,括號內的部分可以作爲一個組來提取;

[\da-zA-Z]{5}-[\da-zA-Z]{4} 

正如我們只有一個分組,這通常將作爲組稱爲0

因此,使用上的樣品的第一個表達式;

<zipcode>12345-1234</zipcode> 

並返回組0,會給你;

12345-1234 

我不熟悉使用VBScript,所以我不能回答它自己,但這個答案似乎解釋瞭如何提取在VBScript子匹配; Regular Expression - How to find a match within a match?

如果你想測試你的正則表達式,你應該使用一個測試工具,如RegexPal,它強調什麼是實時進行匹配,因此您可以測試你的表達的部分,看什麼不工作。 http://regexpal.com/ 另一個很好的信息來源是正則表達式引用,這個頁面包含了很多基本正則表達式函數的參考信息。 enter link description here

+0

至少感謝一些東西,我確實有點了解你在說什麼......我不知道這將很難完成。文本中有多種郵政編碼方式。它可以有一個連字符(5digits) - (4digits),它不能有連字符(12345)或(123456789)所有數字。如果有任何信件我希望它數。我可不可以在(\ - )中輸入可選的連字符嗎? – user2150312

+0

你會使用[ - ]?可選連字符,空格或無字符。 []創建允許的字符的字符類。 The?使其成爲可選。 – Robadob

+0

所以我再次非常感謝他們的幫助,這一切都完全在我的頭上(我正在嘗試),但是......可以肯定地說,沒有簡單的方法可以在標籤之間允許任何東西除了[ A-ZA-Z]? – user2150312

相關問題