困难的正则表达式

时间:2011-09-27 09:04:31

标签: regex

我需要一个执行以下操作的正则表达式: 下面是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”,那么使用这个regexp我无法确定数组中的第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/

感谢您寻找合适的正则表达式的支持......

1 个答案:

答案 0 :(得分:1)

试试这个:

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

输入:

lm[0][ti]

输出:

enter image description here

输入:

lm

输出:

enter image description here