2013-07-06 36 views
0

我有以下字符串:非文字字符没有被发现

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." 

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

+0

你的正则表达式不适合我。 – raam86

回答

1

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

在将其添加到正则表达式的末尾之前,匹配项为hu/\\/\\,以下字符为。当您将\b添加到正则表达式中时,您试图匹配\b之间的\\,这不是一个字边界,因此它不匹配。

+0

当然!有没有办法强制该\ b的左侧作为一个单词?或者其他更好的解决方案会产生相同的效果? –

相关问题