leo*_*loy 9 regex apache mod-rewrite
Apache文档说明了这一点
CondPattern是条件模式,一个正则表达式,应用于TestString的当前实例[...] CondPattern是一个perl兼容的正则表达式,带有一些附加功能[...]
并给出了这样的例子
RewriteCond %{REMOTE_HOST} ^host1.* [OR]
Run Code Online (Sandbox Code Playgroud)
我知道Perl正则表达式,但这似乎让我感到困惑:
我们在这里讲的部分匹配吗?(模式匹配字符串中的一些子字符串,如Perl $string =~ m/pattern/;
?)
或者它是完全匹配?(模式匹配整个字符串,如在Java中Pattern.matches(pattern, string)
?)
如果匹配是部分的,则尾随.*
似乎是多余的.它已经满了,那^
就是多余的东西.
我发现的许多例子,在Apache文档和各处都有这个(对我来说很明显)不一致.
更新:这是文档的问题,现在已经更正了.
偏袒.(.*
在示例中是多余的.)
Apache使用了优秀的PCRE库(虽然是旧版本 - 上次我检查的Rev:5.0 2004),由Phillip Hazel编写,非常像Perl.但我同意,他们的许多例子在正则表达式精度方面都有很多不足之处.
有一些特定于Apache的扩展,例如添加一个导致!
模式应用NOT
逻辑到匹配.我发现的最好的文档(你可能已经看过),就是这个页面:Apache Module mod_rewrite
小智 8
谢谢.我已经删除了我认为你在文档中提到的正则表达式中不必要的.*.如果你找到其他人,请告诉我,我也会解决这些问题.
默认情况下,正则表达式是子串匹配,并且不需要匹配整个字符串(通常).Apache文档中隐含其他内容的地方是错误,需要修复.
当人们完全没有必要时,人们往往会将.*放入正则表达式中.
归档时间: |
|
查看次数: |
12900 次 |
最近记录: |