2010-03-23 60 views
5

給定格式爲字符串:XXX999999v99(其中X是任何字母字符,v​​是任何數字字符,v是字母v字符)如何獲得正則表達式以匹配v後的數字字符?到目前爲止,我已經有'V \ D \ D',其中包括V,但理想情況下,我只想數字部分。正則表達式 - 以文本字符後的所有數字字符

順便說一下,有誰知道一個工具,你可以在其中指定一個字符串進行匹配並生成正則表達式?修改現有的正則表達式是一回事,但我發現從頭開始痛苦!

編輯:重新閱讀這個問題我意識到它看起來像一個家庭作業!不過,我可以向你保證它不是,我試圖匹配的字符串代表附加到產品代碼的產品版本。當前的代碼使用各種各樣的子字符串表達式來檢索版本部分。

回答

4

你可以試試:

v(\d+)$ 
  • v:匹配字面v
  • \d:一個數字
  • \d+:一個或多個數字。
  • ():分組還記得 匹配的部分,可用於 後來
  • $:線錨結束
+0

一些付費節目當我嘗試這個比賽包括V字。是否有可能刪除這個,只是返回數字部分?感謝回覆。 – Simon 2010-03-23 16:51:16

+0

@Simon:當正則表達式找到匹配項時,第一組總是包含匹配正則表達式的完整字符串。如果你只需要獲取被捕獲的部分,你應該檢查第二組。 – 2010-03-23 16:53:46

+0

Duh,剛剛意識到 - 從正則表達式中移除v char! – Simon 2010-03-23 16:54:54

2

你需要使用一個捕獲組:

Regex.Match("XXX999999v99",@"v(\d+)").Groups[1].Value 
+0

小心,如果原始字符串中沒有匹配項,則此代碼在嘗試訪問組[1]時會引發異常。 – 2010-03-23 16:48:58

1

有一些用於正則表達式測試的免費工具。

嘗試:regex powertoy

或:RegExr

也有像regex buddy

+0

我一直在使用RegExr的在線版本,但我覺得很難與之合作! – Simon 2010-03-23 16:53:19

相關問題