反斜杠后未检测到非单词字符

时间:2013-07-06 01:57:30

标签: ruby regex

我有以下字符串:

hum = "\\w*h(u|v|\\|_\\||\\/)(m|\\/\\\\\\/\\\\)\\w*"

被转储到以下正则表达式中:

"I like to hu/\\/\\ every day.".gsub /#{hum}/i, 'sing'
=> "I like to sing every day."

有效。但后来我这样做了:

"I like to hu/\\/\\ every day.".gsub /#{hum}\b/i, 'sing'
=> "I like to hu/\\/\\ every day."

我所做的就是在\b之后添加#{hum}(非单词字符)。并且字符串中的非单词字符。有什么问题?

1 个答案:

答案 0 :(得分:1)

\b匹配单词边界。这是一个零宽度的位置,一边是单词字符,另一边是非单词字符。

在将其添加到正则表达式的末尾之前,匹配为hu/\\/\\,并且以下字符为。当您向正则表达式添加\b时,您尝试在\b\\之间匹配,这不是字边界,因此它不匹配。< / p>