2011-11-17 8 views
0

Qu'est-ce qu'une expression régulière pour correspondre au mot call ou CALL dans la chaîne suivante en C#?Regex pour faire correspondre dans les chaînes

NIFTY-CALL-1200-Aug11 
NIFTY CALL 1200 Aug11 
NIFTYCALL-CALL-1200-Aug11 //In this case second call word must be matched not NIFTYCALL. 
NIFTYCALL CALL 1200 Aug11 //In this case second call word must be matched not NIFTYCALL. 
CALLNIFTY CALL 1200 Aug11 //In this case second call word must be matched not CALLNIFTY. 
CALLNIFTY CALL 1200 Aug11 //In this case second call word must be matched not CALLNIFTY. 
CALLNIFTY Aug11 1200CALL //In this case last call word must be matched not CALLNIFTY. 
CALLNIFTY 1200 Aug11CALL //In this case last call word must be matched not CALLNIFTY. 

Répondre

2

Que dire

Regex regexObj = new Regex(@"(?:\b|[0-9])(CALL)\b", RegexOptions.Singleline); 
  • le pour une limite de mot ou un numéro précédent CALL

  • (CALL) vérifie partie (?:<b|[0-9]) trouve la chaîne et le met dans un groupe correspondant

  • le \b partie vérifie à nouveau pour une limite de mot.

+0

, Cela fonctionne super.Merci.Mais je ne comprends pas la première partie correctement pour la limite de mot (?: Harikrishna

+0

@Harikrishna - le '\ b' est une limite de mot, le' | 'est équivalent à une déclaration' or', le '[0-9]' est un chiffre (le même que \ d que Pengyu utilisé). Tout ceci est enveloppé dans un groupe sans capture '(?: ....)'. –

1

Il serait

Regex re = new Regex(@"(\d|\b)(CALL|call)(\d|\b)"); 
+0

+1 J'ai oublié le '\ d'. –

0

pourrait également utiliser

Regex re = new Regex(@"(\d|\b)(CALL)(\d|\b)",RegexOptions.IgnoreCase); 

au lieu d'utiliser CALL | appel. De cette façon, vous pouvez également faire correspondre "cAll" ou "CALl". (Si nécessaire, bien sûr)

Questions connexes