前几天我正在阅读有关URL重写的文章,我看到了这个表达式
<conditions>
<add input="{HTTP_HOST}" type=”Pattern” pattern="^([^.]+)\.mysite\.com$"> <!-- condition back-reference is captured here -->
</conditions>
除了表达式([^.]+)
之外,我理解所有内容。我明白^意味着开始和。除了整个表达意味着什么之外什么都没有意义?
答案 0 :(得分:2)
[^.]
表示“任何字符,但只是一个点”。 (在字符类中,开头的^
表示“不”。)除了“a dot”之外,点在字符类中没有任何意义。
+
表示“一个或多个”。
括号中的内容将其中的内容分组,并告诉正则表达式引擎记住它在那里找到的内容。
最终结果是,整个表达式将与“sub.mysite.com”匹配,并且带括号的部分将匹配“sub”并记住它(可能是为了将来使用)。
答案 1 :(得分:1)
一个贪婪的,捕获的一个或多个不是.
字符的匹配(字面上;在方括号内,.
实际上意味着.
,而不是'任何字符'。 / p>
答案 2 :(得分:1)
^
不是输入锚点的开头,而是反转字符类匹配的内容。因此[^x]
会匹配“x
以外的任何内容”。
因此,[^.]
匹配除点之外的所有内容。
答案 3 :(得分:1)
[^.]+
表示:重复一次或多次除点之外的任何字符。
“[...]”定义一组字符,其中任何一个字符都满足。
括号开头的“^”表示要排除字符集,并且要包括所有其他字符。 ^在这里不算作一个角色。
“+”表示必须至少一次,并且可以出现多次
“”。在这种情况下意味着一个简单的点
答案 4 :(得分:1)
方括号表示“任何包含的字符”。插入符号作为方括号内的第一个字符,将其含义更改为“以下字符中的任何一个”,并且句点失去其特殊含义。加号表示“一个或多个以前的单位”,而parens表示“将内容视为一个单元。”
所以([^.]+)
表示“一个或多个不是句号的字符,被视为一个单元。”