我想创建一个正则表达式来捕获基于可选子字符串的可选组。例子可能是:
DATEF[[%d/%m/%Y %H:%M
DATEF[[%H:%M]]
DATEF
TIME
等
我希望捕获DATE
和参数%H:%M
。
表达式(.*?)\[\[(.*?)\]\]
适用于参数,但可选的排除字符串失败并返回null。
答案 0 :(得分:1)
我会建议这个:
/^([a-zA-Z]+)(?:\[\[([^\]]+)\]\])?$/
第1组包含功能名称,如果存在[[
,则第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