1

私はLaTeXに一致しています-\command{...}{...}の形式のコマンド。2番目の引数はオプションです。私のRegExは、引数内にネストされたLaTeXコマンドが存在する可能性がある場合に注意する必要があるため 、 perl6faqの1つの例をわずかに変更したバージョンです。

名前付きグループを使用したい。これどうやってするの?(?<first>:...)を(?&first)と一緒に使用しようとしましたが、「無限再帰」エラーが発生します。ここでの正規表現に関しては少し頭がおかしいかもしれませんが、これはこれまでのところ非常にうまく機能しました。

my $regex = qr/
          \\command
            (\{
              (?:
                [^\{\}]++
                  |
                (?1)
              )*
            \})
           (\{
              (?:
                [^\{\}]++
                  |
                (?2)
              )*
           \})?
        /x;

$s =~ m/$regex/g
4

1 に答える 1

0

s/(?<first>foo+)/\k<first>bar/orのような名前付きグループを使用できるはずですがs/(?first:foo+)/\g{first}bar/、パターンの一部として(?<first>:...)扱います。:

あなたの(?PARNO)式が無限再帰を引き起こしている理由はわかりませんが、まったく同じことを行う場合、マニュアルには追加の括弧グループがあります。

于 2011-11-25T04:31:02.597 に答える