2010-10-22 65 views
0

我想爲檢查字符串1設置RegularExpressions。在Delphi中設置RegularExpressions的幫助XE

字符串1可以更改爲:

  • 字符串1:= 'D1413578; 1038'
  • 字符串1:= 'D2; 11'
  • 字符串1:= 'D16; 01'
  • 。 ...

in string1 only字符'D'和分號總是存在的。

我設置了RegularExpressions1:='\ b(D#\;#)\ b';

但RegularExpressions1無法正確檢查string1。

在vb6這RegularExpressions1 =「D#;#」。但我不知道這是在德爾福?

+0

您可以在線測試RegEx,例如http://www.myregextester.com - 寫這些表達式時非常有幫助! – 2010-10-22 13:47:08

回答

3

嘗試

\bD\d*;\d* 

\d*表示 「零個或多個數字」。

順便說一下,我省略了第二個\b,否則如果在分號後沒有數字(並且您說數字是可選的),匹配將失敗。

如果「檢查」你的意思是「驗證」整個字符串,然後用

^D\d*;\d*$ 

這一切都假定只有數字是D;後允許。如果情況並非如此,請編輯您的問題以澄清。

+0

+1對於BEST avitar icon EVER。非常酷的想法。 – 2010-10-22 13:25:52

+0

@Chris,Tim:它包含哪些信息?它是ASCII碼嗎? – 2010-10-22 15:46:25

+0

@Andreas - 這是他的網站的URL,與他的個人資料中列出的一樣。這裏顯示的小圖不會掃描我的機器人,但他的個人資料中較大的一個選擇掃描,我的機器人提議將我帶到他的網站。很酷。 – 2010-10-22 17:03:49

0

假設這兩個數字至少需要一個數字,使用正則表達式:

\AD\d+;\d+\z 

我更喜歡使用\A\z代替^$,因爲他們永遠只能做匹配字符串的開始和結束那。

在Delphi XE您可以檢查這個表達式是否在一個單一的代碼行相匹配string1

if TRegEx.IsMatch(string1, '\AD\d+;\d+\z') then ... 

如果你想使用多字符串,intantiate的TRegEx:

VAR RE:TRegEx ;

RegEx.Create('\ AD \ d +; \ d + \ z'); 在ListOfStrings中爲string1做 如果RE.IsMatch(string1)然後...