2012-06-28 241 views
2

我通过递增有此表达正则表达式提取字符串

accordionMain_i0_accordion_i0_ctl01_0_ddl_xxxxxxxx_iy_tblItem 

其中xxx也“_”及其数量而变化包含,并且y从0开始。我想用正则表达式提取xxxxxx。我试过拆分函数,但xxxx可以包含几个'_',所以通过从拆分中删除数组的最后2个元素,我必须检查ddl,然后加入xxx的所有部分等。你知道一个更好的方法,通过使用REGEX ?任何帮助将不胜感激。

+0

我不是一个亲或任何...但如果是我,我会在拆分“ddl_”然后阅读,直到我点击“_iy” –

回答

3

如果你正则表达式引擎支持lookaheadlookbehind,然后使用:

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

其他

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

您应该指定您正在使用的语言。但这里有一个刺在它:

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

然后,你X的将被存储在第一捕捉,$1

这是演示:http://rubular.com/r/MH4GbMStdf

编辑:

如果你的意思是 “什么”,而不是字面的 “X”,则:

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

正则表达式accordionMain_i0_accordion_i0_ctl01_0_ddl_(.*?)_i\d+_tblItem返回您XXXXXXXX如果发现匹配。