2010-11-16 31 views
0

我有正則表達式問題,我必須替換字符串中的單詞或單詞的縮寫。假設我們有字符串「GARGANO/MART/RUBI250 /(FLAH)」。 此字符串中的單詞是RUBIN,但縮寫爲RUBI250。幫助Regex.Replace(「GARGANO/MART/RUBI250 /(FLAH)」,@「 bRUB(I(N?)?)?([0-9] *) b」,「TOKE」)

然而,當我使用的表達

Regex.Replace("GARGANO/MART/RUBI250/(FLAH)", @"\bRUB(I(N?)?)?([0-9]*)\b", "TOKE") 

我得到這個 「GARGANO/MART/TOKE /(FLAH /胚芽)」

我期望的結果是 「GARGANO/MART/TOKE250 /(FLAH/GENN)「

看來,它認爲數字是工作的一部分,正在取代數字。當我改變了正則表達式

@ 「\ bRUB(I(N?)?)?\ B」,

那麼它不因爲我猜數螺絲一切行動返回任何比賽。請幫忙。

回答

0

嘗試用其前瞻版本(?= [0-9])替換([0-9] )部件。當它存在時,它不應該替換匹配的數字部分。

1

它應該是:

Regex.Replace("GARGANO/MART/RUBI250/(FLAH)", @"\bRUB(I(N?)?)?(?=[0-9]*\b)", "TOKE") 

(?=[0-9]*\b)是向前看,這意味着它必須在比賽結束後在那裏,但它不是比賽的一部分

+0

你是對的。這就是我沒有複製/粘貼我測試的內容... – climbage 2010-11-16 22:51:28