0

我找到了以下正则表达式

new RegExp("(^|\\s)hello(\\s|$)");

我参考http://www.javascriptkit.com/jsref/escapesequence.shtml的正则表达式..但我看不到 \s 转义序列..我知道 \s 表示空白字符...但是前面的 \ 做什么..哪个字符被转义?我在以下文档http://ejohn.org/blog/getelementsbyclassname-speed-comparison/的 Treewalker 代码中发现了类似的正则表达式

4

4 回答 4

4

double\\是为了转义字符串内的反斜杠。换句话说,\\将被解释为\正则表达式。

于 2012-04-30T14:37:20.417 回答
1

在这种情况下,额外的 \ 是为了逃避 \s 中的 \。因为我们在一个字符串声明中,所以你必须加倍 \ 来转义它。一旦字符串被处理和保存,它就会被缩减为 (^|\s)hello(\s|$)

于 2012-04-30T14:38:11.977 回答
1

紧跟在第一个字符之后的字符\被转义。通常\s转义sto 表示“空白”。在您的示例中,转义的字符是\.

你所拥有的是一个表达式,它构建了一个正则表达式(可能会传递到其他地方)(^|\s)hello(\s|$)——单词“hello”前面是空格或字符串的开头,后面是空格或字符串的结尾。

于 2012-04-30T14:39:53.773 回答
1

本质上,reg ex 正在做的是寻找围绕单词 hello 的文本的开始和结束项,并同时将 '\s' 解释为字符串内容。

用外行的话来说,它正在寻找一个完全匹配的字符串:

|\你好\s|

正如其他人所说的那样,双 \ 是为了逃避单 \,以便 reg ex 引擎不是寻找空格,而是实际上寻找 '\s' 作为字符串。

^ 表示行首,$ 表示行尾,2 | 被解释为要查找的实际字符

最后,您的开始和结束标记用括号括起来 (),这意味着它们将被提取并放置在匹配项中,对于使用 C# 的您来说,这意味着您可以使用以下方法获取它们:

myRegex.Matches.Group[1].Value
myRegex.Matches.Group[2].Value

1 是开始分组,2 是结束。

于 2012-04-30T14:46:13.707 回答