3

Apache 2.4.10 (非レガシー モードの ap_expr) を使用すると、次の SSI は予想されるキャプチャ グループを返しません。

<!--#set var="keyvaluepair" value="key1=value1" -->
<!--#if expr="v('keyvaluepair')=~/key1=([a-zA-Z0-9]*)/" -->
<!--#set var="match" value="$0" -->
<!--#set var="value" value="$1" -->
<!--#endif -->

keyvaluepair:<!--#echo var="keyvaluepair" -->
<br>regex: /key1=([a-zA-Z0-9]*)/
<br>match:<!--#echo var="match" -->
<br>value:<!--#echo var="value" -->
<br>expected value: value1
<br>Why is $1 empty?

正規表現の [a-zA-Z0-9]* を括弧で囲んでいるため、$1 はまさにそのキャプチャ グループであり、値のみであると予想されます。なぜそれは空ですか?

オラフ

編集: $1 は、v() 関数の代わりに $ を使用し、\b の代わりに (?:^|&) を使用し、=~ を使用しない、レガシー モード (SSILegacyExprParser がオン) でのみ機能するようです:

<!--#if expr="$keyvaluepair = /(?:^|&)key1=([a-zA-Z0-9]*)/" -->

新しい ap_expr 構文でキャプチャ グループをマーク/区切りする方法におそらく変更はありますか?

4

0 に答える 0