2012-06-28 6 views
2

J'ai cette expressionExpression régulière string Extrait

accordionMain_i0_accordion_i0_ctl01_0_ddl_xxxxxxxx_iy_tblItem 

où xxx peut contenir '_' et son numéro varient, et le démarrage de 0 y en incrémentant. Je voudrais extraire le xxxxxx en utilisant l'expression régulière. J'ai essayé la fonction split mais le xxxx peut contenir plusieurs '_', donc en enlevant les 2 derniers éléments du tableau, je dois vérifier ddl, puis rejoindre toutes les parties de xxx etc. Connaissez-vous une meilleure méthode en utilisant REGEX ? Toute aide serait grandement appréciée.

+0

Je ne suis pas un pro ou quoi que ce soit ... mais si elle était moi je Split à "ddl_" et ensuite lire jusqu'à ce que je frappe "_iy" –

Répondre

3

Si votre moteur RegEx prend en charge lookahead et lookbehind, utilisez:

(?<=_ddl_)\w+?(?=_i\d+) 

autre

(:_ddl_)(\w+?)(?:_i\d+) 
1

Vous devez spécifier la langue que vous utilisez. Mais voici un coup de poignard à elle:

/accordionMain_i0_accordion_i0_ctl01_0_ddl_([x_]+)_i\d+_tblItem/ 

Ensuite, vos x de seront stockées dans la première capture, $1.

Voici une démo: http://rubular.com/r/MH4GbMStdf.

EDIT:

Si vous vouliez dire "quoi que ce soit" au lieu de littéral "x", puis:

/accordionMain_i0_accordion_i0_ctl01_0_ddl_(.+)_i\d+_tblItem/ 
2

Regex accordionMain_i0_accordion_i0_ctl01_0_ddl_(.*?)_i\d+_tblItem retourne si votre correspondance trouvée xxxxxxxx.

Questions connexes