次の時点で理解できない次の正規表現(Python) があります。最初のオルタネーションにも一致しないのはなぜですか?
正規表現(理解を深めるためにスペースを空けて):
(?:
\$\{
(?P<braced>
[_a-zA-Z][a-zA-Z0-9]*(?::[_a-zA-Z][_a-zA-Z0-9]*)+
)
\}
)
| ### SECOND ALTERNATION ###
(?:
\$
(?P<named>
[_a-zA-Z][a-zA-Z0-9]*(?::[_a-zA-Z][_a-zA-Z0-9]*)+
)
)
テスト文字列:
asdasd $asd:sd + ${asd123:asd} $HOME $$asd
一致したもの:
asdasd $asd:sd + ${asd123:asd} $HOME $$asd
上記の正規表現パターンによると、最初の代替も表示されます。つまり、次のようになります。
${asd123:asd}
交替パターンがよくわからないような?