2011-09-27 67 views
1

我需要一个正则表达式,其执行以下操作: 这里有一个HTML输入字段的名称:困难正则表达式

lm[0][ti] 

我需要找到基本的名称(“LM”)。只有如果该名称包含括号,我需要找到第二个括号(“ti”)中的字符串。

为了得到它的部分很容易与下面的正则表达式:

([a-zA-Z\d_]+)\[?([0-9]*)\]?\[?([a-zA_Z\d_]+)\]? 

据我所需要的所有部分匹配。

Array 
(
    [0] => lm[0][ti] 
    [1] => lm 
    [2] => 0 
    [3] => ti 
) 

但是,如果HTML的输入名称只是“LM”,使用这个正则表达式我不能确定数组中的第4项是有效的名称。该阵列是这样的:

Array 
(
    [0] => lm 
    [1] => l 
    [2] => 
    [3] => m 
) 

“m” 是无效的,我想获得这个数组:

Array 
(
    [0] => lm 
    [1] => 
    [2] => 
    [3] => 
) 

或本

Array 
(
    [0] => lm 
) 

你可以在这里测试正则表达式: http://regexp-tester.mediacix.de/exp/regex/

感谢您的支持,以找到正确的正则表达式...

+0

你是说,如果 'LM' 独自站在,没有别的应该匹配吗?如果是其他信件?这是写在名称属性?名称= LM [0] [TI]'? – Nicolai

+0

是的,它应该只匹配name =“lm”以及name =“lm [0] [ti]”...下面的正则表达式就是我所需要的。 – Hein

回答

1

试试这个:

(\w+)(?:\[(\d+)\])?(?:\[(\w+)\])? 

输入:

lm[0][ti] 

输出:

enter image description here

输入:

lm 

输出:

enter image description here

+1

酷!作品! +1的最大回答速度!谢谢! – Hein

+0

@Kirill您使用过哪个工具? –

+0

@ViswanathanIyer,我使用Expresso:http://www.ultrapico.com/Expresso.htm –