使用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()函数,(?:^ |&amp;)代替\ b而不使用=〜:
<!--#if expr="$keyvaluepair = /(?:^|&)key1=([a-zA-Z0-9]*)/" -->
在较新的ap_expr语法中,如何标记/分隔捕获组可能会有变化吗?