0

我想创建一个正则表达式来捕获基于可选子字符串的可选组。示例可能是:

DATEF[[%d/%m/%Y %H:%M 
DATEF[[%H:%M]]
DATEF
TIME

等等

我想捕获DATEand 参数。%H:%M该表达式(.*?)\[\[(.*?)\]\]适用于参数,但可选的排除字符串失败并返回 null。

4

1 回答 1

1

我建议这个:

/^([a-zA-Z]+)(?:\[\[([^\]]+)\]\])?$/

第 1 组保存函数名,如果 a[[存在,第 2 组捕获和 之间的所有内容[[]]如果正方形不存在,第 2 组将根本不存在。

编辑:

请注意,外部非捕获组包含一个捕获组:

/^([a-zA-Z]+)         #captures the command
    (?:\[\[           #matches, but not captures the opening brackets
        ([^\]]+?)     #captures the content of the brackets
    \]\])?            #matches the closing brackets
$/x
于 2012-08-14T12:32:44.117 回答