regex Apache SSI捕获组无法正常工作?

neekobn8  于 2023-04-22  发布在  Apache
关注(0)|答案(1)|浏览(86)

使用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语法中,标记/分隔捕获组的方式是否有变化?

0lvr5msh

0lvr5msh1#

在结合ap_expr和ssi时确实存在一个问题。将来遇到这个问题的人,可以看看Helge在https://bz.apache.org/bugzilla/show_bug.cgi?id=57448上的“修复”

相关问题