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 に答える