2017-01-17 291 views
1

我有以下輸入:正則表達式替換字符串

Person 1kg 

爲了獲得預期的輸出:

Person 1kEq 

我現在用的是以下模式:

string.Format(@"(?<!\S){0}(?!\S)", Regex.Escape("kg")); 
Regex.Replace(inputSentence, Pattern, "kEq"); 

Regex.Replace不能用kEq代替kg

如果我編輯輸入句子Person 1 kg更換情況,

有人能幫助我這個模式?

回答

3

(?<!\S)要求在搜索項之前輸入字符串的開頭或空白。搜索字詞後面的012b預覽需要字符串結尾或空白字符。這就是爲什麼如果用Person 1 kg中的空格分隔數字和度量單位,就會發生替換。

看起來在這種情況下,如果沒有與其他字母附在一起,您想替換匹配項。使用在開始(?<!\p{L})回顧後和(?!\p{L})前瞻底:

string.Format(@"(?<!\p{{L}}){0}(?!\p{{L}})", Regex.Escape("kg")); 

regex demo

+0

當我使用上面的模式/ C#語句時,我得到一個FormatException,你能幫我解決嗎? – Sandepku

+1

對不起,我一直記得用限制量詞將大括號加倍,並忘記在Unicode類別中做同樣的事情。 –