这在正则表达式中意味着什么?

时间:2012-04-21 12:14:27

标签: c# url-rewriting

前几天我正在阅读有关URL重写的文章,我看到了这个表达式

<conditions>
  <add input="{HTTP_HOST}" type=”Pattern” pattern="^([^.]+)\.mysite\.com$"> <!-- condition back-reference is captured here -->
 </conditions>

除了表达式([^.]+)之外,我理解所有内容。我明白^意味着开始和。除了整个表达意味着什么之外什么都没有意义?

5 个答案:

答案 0 :(得分:2)

[^.]表示“任何字符,但只是一个点”。 (在字符类中,开头的^表示“不”。)除了“a dot”之外,点在字符类中没有任何意义。

+表示“一个或多个”。

括号中的内容将其中的内容分组,并告诉正则表达式引擎记住它在那里找到的内容。

最终结果是,整个表达式将与“sub.mysite.com”匹配,并且带括号的部分将匹配“sub”并记住它(可能是为了将来使用)。

答案 1 :(得分:1)

一个贪婪的,捕获的一个或多个不是.字符的匹配(字面上;在方括号内,.实际上意味着.,而不是'任何字符'。 / p>

答案 2 :(得分:1)

方括号内的

^不是输入锚点的开头,而是反转字符类匹配的内容。因此[^x]会匹配“x以外的任何内容”。

因此,[^.]匹配除点之外的所有内容。

答案 3 :(得分:1)

[^.]+

表示:重复一次或多次除点之外的任何字符。

“[...]”定义一组字符,其中任何一个字符都满足。

括号开头的

“^”表示要排除字符集,并且要包括所有其他字符。 ^在这里不算作一个角色。

“+”表示必须至少一次,并且可以出现多次

“”。在这种情况下意味着一个简单的点

答案 4 :(得分:1)

方括号表示“任何包含的字符”。插入符号作为方括号内的第一个字符,将其含义更改为“以下字符中的任何一个”,并且句点失去其特殊含义。加号表示“一个或多个以前的单位”,而parens表示“将内容视为一个单元。”

所以([^.]+)表示“一个或多个不是句号的字符,被视为一个单元。”