2011-09-08 112 views
1

給定的字符串是一樣的東西:如何匹配 '{{{' 使用RegEx

words words {{{value}}} some other words {{{value2}}} 

我想下面的一個:

const string pattern = @"\b({{{)\w+(}}})\b"; 
Regex optionRegex = new Regex(pattern, RegexOptions.Compiled); 
MatchCollection matches = optionRegex.Matches(text); 

@"\b(\{\{\{)\w+(\}\}\})\b"沒有幫助。請幫助創建正則表達式,TIA

+0

David已經回答了你的問題,我在我的答案中解釋了這裏[how-exactly-do-regular-expression-word-boundaries-work-in-php](http://stackoverflow.com/questions/6531724/how -exactly-do-regular-expression-word-boundaries-work-in-php/6531959#6531959)單詞邊界更詳細一點。你可以忽略這個問題有一個php標籤,這對理解單詞邊界沒有任何影響。 – stema

回答

5

你的正則表達式應該是:

@"{{{\w+}}}" 

的問題是,有沒有你在哪裏試圖匹配字邊界(\b)。

如果需要,您可以添加分組,但由於您知道第一組包含{{{,第二組包含}}},因此您不太可能這樣做。也許你打算組詞裏面:

@"{{{(\w+)}}}" 
+1

大括號不需要被轉義。如果它們不是像「{1,2}」這樣的量詞的一部分,它們就會被直接匹配。無論如何+1 – stema

+0

@stema謝謝,我已經更新了 –

2

取出\b,這意味着字邊界但有是空間和{給定的字符串之間沒有。