2015-06-18 76 views
0

以下是返回0;有沒有什麼辦法可以得到4的價值?帶文字邊界的正則表達式索引值

var searchString = "two"; 
var result = Regex.Match("one two", "\b" + searchString + "\b").Index 
+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

varbatim string'Regex.Match(「one two」,@「\ btwo \ b」)。索引' –

+0

varbatim string'Regex.Match(「one two」,@「\ btwo \ b」)。索引' –

回答

3

你應該使用逐字字符串:

Regex.Match("one two", @"\b" + searchString + @"\b").Index 
        ^     ^

在你的代碼中,\b被解釋爲退格字符。用@前綴字符串文字會使編譯器忽略字符串轉義序列,並將\b按原樣傳遞給正則表達式引擎。

0

這工作:

Regex.Match("one two", "\\btwo\\b").Index 

我不能使用逐字字符串,因爲在我的作品例如字符串「二」是一個變量。謝謝您的幫助!

+0

If 'two'是一個變量,您可以使用'@「\ b」+ pattern + @「\ b」'但這並不會改變可讀性。 –