我有这个表达
accordionMain_i0_accordion_i0_ctl01_0_ddl_xxxxxxxx_iy_tblItem
其中xxx也可以包含'_'并且其数量不同,y通过递增从0开始。我想使用正则表达式提取xxxxxx。我尝试了分割功能,但xxxx可以包含几个'_',所以通过从分割中删除数组的最后2个元素,我必须检查ddl,然后加入xxx的所有部分等。你知道一个更好的方法,使用REGEX ?任何帮助将不胜感激。
答案 0 :(得分:3)
如果您的RegEx引擎支持lookahead
和lookbehind
,请使用:
(?<=_ddl_)\w+?(?=_i\d+)
否则
(:_ddl_)(\w+?)(?:_i\d+)
答案 1 :(得分:2)
正则表达式accordionMain_i0_accordion_i0_ctl01_0_ddl_(.*?)_i\d+_tblItem
会返回 xxxxxxxx 。
答案 2 :(得分: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/