使用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-Z 0 -9]* 周围的括号,我希望$1只是捕获组,它应该是唯一的值。为什么它是空的?
奥拉夫
编辑:$1似乎只在遗留模式下工作(SSILegacyExprParser on),使用$而不是v()函数,(?:^|&)而不是\B,并且不使用=~:
<!--#if expr="$keyvaluepair = /(?:^|&)key1=([a-zA-Z0-9]*)/" -->
在较新的ap_expr语法中,标记/分隔捕获组的方式是否有变化?
1条答案
按热度按时间0lvr5msh1#
在结合ap_expr和ssi时确实存在一个问题。将来遇到这个问题的人,可以看看Helge在https://bz.apache.org/bugzilla/show_bug.cgi?id=57448上的“修复”