2011-09-08 6 views
1

La chaîne est quelque chose comme:Comment faire correspondre l' '{{{' en utilisant RegEx

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

J'essaie la suivante:

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

et @"\b(\{\{\{)\w+(\}\}\})\b" n'a pas aidé. S'il vous plaît, aider à créer regex, TIA

+0

David a déjà répondu à votre question, je l'ai expliqué dans ma réponse ici [http://stackoverflow.com/questions/6531724/how-how-exact-expression-word-limits-work-in-php] -exactement-do-regular-expression-mot-frontières-travail-en-php/6531959 # 6531959) le mot frontières un peu plus en détail. Vous pouvez ignorer que cette question a une balise php, cela ne fait pas de différence pour comprendre les limites des mots. – stema

Répondre

5

Votre regex devrait être:

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

Le problème est qu'il n'y a pas de mot (\b) où vous essayez de faire correspondre.

Vous pouvez ajouter le regroupement si vous en avez besoin, mais il semble improbable que vous le fassiez puisque vous savez que le premier groupe contient {{{ et le second contient }}}. Peut-être que vous vouliez dire au groupe le mot à l'intérieur:

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

Les accolades n'ont pas besoin d'être échappées. S'ils ne font pas partie d'un quantificateur comme '{1,2}', ils sont appariés littéralement. De toute façon +1 – stema

+0

@stema merci, je l'ai mis à jour –

2

Retirez le \b, cela signifie mot-frontière mais il ne sommes entre l'espace et {dans la chaîne donnée.

Questions connexes