2010-12-23 272 views
3

我將有以下可能的字符串:正則表達式幫助

12_3

12_3 + 14_1 + 16_3-400_2

的數字可能會有所不同,但我什麼尋找的是X_X數字模式。但是,我需要做一個替換,它將搜索2_3,而不是將12_3作爲有效匹配返回。

+/-是'arthemtic符號,可以是任何有效值。他們還需要ARENT(在第一個例子中)..所以,我可能想檢查一個只有12_3的字符串,如果我通過2_3,它不會返回匹配。只有當我通過12_3。

這是一個C#腳本。

非常感謝您的幫助!我是愚蠢的正規表達式。

+2

我不明白過多的「問題」只不過是要求我們爲你做你的工作。有很多方法可以通過閱讀偉大的書籍(如Mastering Regular Expressions)或RegEx Buddy等軟件來學習正則表達式。無論哪種方式,都沒有任何理由要求提出正則表達式問題,而不會顯示任何先前嘗試過的表達方式。 – 2010-12-23 03:03:31

+0

@Frazell - 這是此用戶的第五個問題,以及他/她的第一個正則表達式問題。如果您認爲存在一般性問題,請在[meta](http://meta.stackoverflow.com/)上開始提問,但這裏基本上是噪音。 – Kobi 2010-12-23 05:10:24

回答

2

好,我們有,即: 2_3 + 12_3 + 14_1 + 16_3-400_2 + 2_3

的regexp#1:

Regex r1 = new Regex(@"\d+(\d_\d)"); 
MatchCollection mc = r1.Matches(sourcestring); 

相配實測值:

[0] [0 ] = 12_3 [0] [1] = 2_3

[1] [0] = 14_1 [1] [1] = 4_1

[2] [0] = 16_3 [2] [1] = 6_3

[3] [0] = 400_2 [3] [1] = 0_2

的regexp#2:

Regex r2 = new Regex(@"\d+\d_\d"); 
MatchCollection mc = r2.Matches(sourcestring); 

相配實測值:

[0] [0] = 12_3

[1] [0] = 14_1

[2] [0] = 16_3

[3] [0] = 400_2

在這裏,你在找什麼?

+0

感謝您的支持!我有一個類似的模式,你的第二個,但我無法弄清楚,如果我需要做多個模式的數字計數在左側和右側_ ..非常有幫助! – dpluscc 2010-12-23 03:11:26

2

\b\d+_\d+\b

\d是數字,\b是一個零寬度的字邊界。看到這C# regex cheat sheet

更新:我只是尋找一個「C#正則表達式備忘單」來驗證\b是一個字邊界(它是\<\>在grep中)。這是第一個結果。我沒有真正驗證文字。無論如何,我現在鏈接到一個不同的備忘單。