Regex AEM dispatcher中的正则表达式格式不同
当我们创建具有正斜杠的正则表达式时,我们需要在正斜杠之前放置一个反斜杠,因为正斜杠是未转换的分隔符。例如,如果我希望我的正则表达式匹配/content/att,那么我需要像这样放置正则表达式Regex AEM dispatcher中的正则表达式格式不同,regex,aem,Regex,Aem,当我们创建具有正斜杠的正则表达式时,我们需要在正斜杠之前放置一个反斜杠,因为正斜杠是未转换的分隔符。例如,如果我希望我的正则表达式匹配/content/att,那么我需要像这样放置正则表达式 /content\/att。这也行得通 但是,当我们在AEM中添加dispatcher规则以允许url路径时,不需要使用反斜杠来表示未转换的分隔符。如果有人能帮我理解这一点,我将不胜感激。我的意思是,为什么我们在编写正则表达式时需要反斜杠,而不是在dispatcher规则的url路径中使用相同的正则表达式时
/content\/att
。这也行得通
但是,当我们在AEM中添加dispatcher规则以允许url路径时,不需要使用反斜杠来表示未转换的分隔符。如果有人能帮我理解这一点,我将不胜感激。我的意思是,为什么我们在编写正则表达式时需要反斜杠,而不是在dispatcher规则的url路径中使用相同的正则表达式时
在dispatcher中,查看url路径–在/att之前没有反斜杠
/type "allow"
/url "/content/att"
/extension '(gif)'
}
我不熟悉AEM Dispatcher,但以下是对正则表达式问题的一般回答: 这是因为
“/content/att”
是正则表达式的字符串表示形式。它的实际正则表达式是“/\/content\/att/”
。请注意,字符串中的初始斜杠也被转义
下面是一个示例:这两个JavaScript正则表达式是相同的:
让regex1=/^\/content\/att/代码>
让regex2=newregexp(“^/content/att”)代码>
“/content/att”
是正则表达式的字符串表示形式。它的实际正则表达式是“/\/content\/att/”
。请注意,字符串中的初始斜杠也被转义
下面是一个示例:这两个JavaScript正则表达式是相同的:
让regex1=/^\/content\/att/代码>
让regex2=newregexp(“^/content/att”)代码>
- 简短回答:因为这是两种不同类型的正则表达式表示
长答覆:
历史上,正则表达式最早出现在QED和ed等文本EDTOR中。在那里,正则表达式用于字符串替换(搜索和替换)。这些工具需要某种方法来区分搜索正则表达式和替换字符串,这就是我们获得分隔符的原因。例如,替换ed中某些文本的命令将是
s«DELIMITER»search regex«DELIMITER»替换字符串«DELIMITER»标志
大多数单字符分隔符都可以使用,但通常会选择/
。当然,可以将分隔符用作正则表达式或替换的一部分,在这种情况下,必须使用反斜杠对其进行转义
一些编程语言将/
编码为regex文本事实上的标准分隔符。JavaScript就是一个例子
现在,不需要将正则表达式与替换分开的用法(或允许正则表达式标志)根本不使用分隔符。Java中就是这样,没有正则表达式文本,正则表达式总是使用模式
类从字符串创建的。这就是为什么在AEM中不需要逃避/
您没有向我们显示您的apache dispatcher配置文件,因此我不确定您要在哪里转义斜杠。我知道apache的mod_rewrite也不使用分隔正则表达式。简短回答:因为这是两种不同类型的正则表达式 长答覆: 历史上,正则表达式最早出现在QED和ed等文本EDTOR中。在那里,正则表达式用于字符串替换(搜索和替换)。这些工具需要某种方法来区分搜索正则表达式和替换字符串,这就是我们获得分隔符的原因。例如,替换ed中某些文本的命令将是
s«DELIMITER»search regex«DELIMITER»替换字符串«DELIMITER»标志
大多数单字符分隔符都可以使用,但通常会选择/
。当然,可以将分隔符用作正则表达式或替换的一部分,在这种情况下,必须使用反斜杠对其进行转义
一些编程语言将/
编码为regex文本事实上的标准分隔符。JavaScript就是一个例子
现在,不需要将正则表达式与替换分开的用法(或允许正则表达式标志)根本不使用分隔符。Java中就是这样,没有正则表达式文本,正则表达式总是使用模式
类从字符串创建的。这就是为什么在AEM中不需要逃避/
您没有向我们显示您的apache dispatcher配置文件,因此我不确定您要在哪里转义斜杠。我知道apache的mod_rewrite
也不使用分隔正则表达式