我找到了以下正则表达式
new RegExp("(^|\\s)hello(\\s|$)");
我引用http://www.javascriptkit.com/jsref/escapesequence.shtml来表示正则表达式.. 但是我看不到那里的转义序列..我知道它指的是空白字符...... 但前面的\做什么..哪个角色被逃脱了? 我在以下文档http://ejohn.org/blog/getelementsbyclassname-speed-comparison/
中的Treewalker代码中找到了类似的正则表达式答案 0 :(得分:4)
double \\
是为了逃避字符串中的反斜杠。换句话说,\\
将被解释为正则表达式的\
。
答案 1 :(得分:1)
在这种情况下,额外\是逃避\中的\。因为我们在一个字符串声明中,你必须加倍\以逃避它。处理并保存字符串后,它将减少到(^ | \ s)hello(\ s | $)
答案 2 :(得分:1)
第一个\
后面的字符被转义。通常\s
将s
转义为“空格”。在您的示例中,转义的字符为\
。
你所拥有的是一个表达式,它构建了(^|\s)hello(\s|$)
的正则表达式(可能是传递到其他地方) - 单词“hello”先于空格或字符串的开头,后跟空格或结尾字符串。
答案 3 :(得分:1)
基本上,reg ex正在做的是查找围绕单词hello的文本的开始和结束项目,并在字面上将'\ s'同时解释为字符串内容。
在外行人看来,它正在寻找一个完全匹配的字符串:
| \ shello \ S |
正如其他人所说的那样,双\ \是为了逃避单个\而不是reg ex引擎寻找空白区域,它实际上将'\ s'作为一个字符串。
^表示行的开头,$表示行的结尾和2 |被解释为寻找的实际字符
最后,您的开始和结束标记都被括起来(),这意味着它们将被提取并放置在匹配中,对于您使用C#意味着您可以使用以下方式获取它们:
myRegex.Matches.Group[1].Value
myRegex.Matches.Group[2].Value
1是开始分组,2是结束。