.net正则表达式的含义[^ \\。] +

时间:2009-10-21 09:57:18

标签: asp.net regex

我对正则表达式有疑问。鉴于正则表达式的这一部分:

(.[^\\.]+)

部分[^\.]+这是否意味着在第一个点之前获取所有内容?所以用这个文字:

您好,我叫Martijn。我住在荷兰。

我得到2个结果:两个句子。但是当我离开+号时,我会得到2个两个字符:hello<space>my等等。为什么会这样?

3 个答案:

答案 0 :(得分:2)

因为dot outside a character class(即不在[]之间)意味着(几乎)任何角色。

因此,.[^\\.]表示匹配(几乎)任何字符,后跟不是点或反斜杠(点不需要是在字符类中转义为仅表示一个点,但反斜杠确实如此,

在您的示例中,这是h(任何字符)e(不是点或反斜杠)等等。

使用+(一个或多个不是点或反斜杠),您将匹配所有不是点的字符,直到点。

答案 1 :(得分:2)

您的正则表达式.[^\\.]+表示:

  1. 匹配任何角色
  2. 匹配任何字符,直到你得到斜线或点“。”。请注意,[^\\.]表示不斜杠或非点,这意味着点或斜杠不匹配。它将继续匹配字符,直到它找到一个点或斜线,因为最后的“+”。因此,它被称为贪婪量词。
  3. 当你输入时(不包括引号):“你好我的名字是Martijn。我住在荷兰。” 比赛是:

    1. 您好,我的名字是Martijn
    2. 。我住在荷兰
    3. 请注意,第一场比赛中不包含点,因为它在Martijn中的n处停止,第二场比赛以点开头。

      删除+ :( .[^\\.])时 它只是意味着:

      1. 匹配任何角色
      2. 匹配除点或斜线之外的任何字符。

答案 2 :(得分:1)

正则表达式意味着: 任意一个字符,后跟超过0个不是反斜杠或句号的字符。