使用 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 似乎只在遗留模式下工作(SSILegacyExprParser on),使用 $ 而不是 v() 函数, (?:^|&) 而不是 \b 并且不使用 =~:
<!--#if expr="$keyvaluepair = /(?:^|&)key1=([a-zA-Z0-9]*)/" -->
在较新的 ap_expr 语法中如何标记/分隔捕获组可能有变化吗?