Regex TCL替代中的困惑

Regex TCL替代中的困惑,regex,tcl,Regex,Tcl,我对以下陈述感到困惑 在第一个语句中,我有5个(反斜杠),它产生了2个(反斜杠)作为输出 在第二个语句中,我有4个(反斜杠),它产生了2个(反斜杠)作为输出 在第三个语句中,我有2个(反斜杠),它产生了1个(反斜杠)作为输出 据我所知,替换后的\\等于\ 既然它是\,它应该返回single\na 谁能给我解释一下替换是如何发生的。嗯,是这样的: 有一些特殊的替代,包括将\\替换为\,因此\\\\\将替换为\\(不是一个\)。有关所有特殊替换的列表,请参阅 在其他转义序列(如\w)上,反斜

我对以下陈述感到困惑

  • 在第一个语句中,我有5个(反斜杠),它产生了2个(反斜杠)作为输出

    在第二个语句中,我有4个(反斜杠),它产生了2个(反斜杠)作为输出

    在第三个语句中,我有2个(反斜杠),它产生了1个(反斜杠)作为输出

    据我所知,替换后的
    \\
    等于
    \

    既然它是
    \
    ,它应该返回single
    \
    na

    谁能给我解释一下替换是如何发生的。

    嗯,是这样的:

    • 有一些特殊的替代,包括将
      \\
      替换为
      \
      ,因此
      \\\\\
      将替换为
      \\
      (不是一个
      \
      )。有关所有特殊替换的列表,请参阅
    • 在其他转义序列(如
      \w
      )上,反斜杠将被删除。从:

      在除下述情况外的所有情况下,都会删除反斜杠,并将以下字符视为普通字符并包含在单词中


    在windows上的文件名中使用
    /
    (和
    文件本地名称
    进行转换,如果外部程序需要的话),并将正则表达式放在
    {
    大括号
    }
    中。这涉及两种最常见的反斜杠混淆情况。在其他转义序列(如\w)上,反斜杠将被删除。你能解释一下这句话吗。当我对特殊字符和非特殊字符进行同样的设置时,
    \
    \\
    \\
    \
    \
    \
    \946
    变成
    \
    \/code>\
    % set a \\\\\w
    \\w
    
    % set a \\\\w
    \\w
    
    % set a \\w
    \w