2015-10-14 14 views
1

我正在使用函數regexp.matchString()將正則表達式模式匹配到我的字符串。我必須使用字邊界才能找到完全匹配。例如,我想匹配「計算」而不是「計算機」。問題是我的字符串將同時具有「計算」和「計算機」。所以我想用字邊界。我嘗試使用\ b在幾個在線go-regex測試器,它的工作。但是,\ b似乎不適用於regexp.matchString()函數。有誰知道是否有替代\ b?或者我如何獲得預期的結果? 我的代碼如何在regexp.MatchString()中使用字邊界( b)go

package main 

import "fmt" 
import "regexp" 

func main() { 
    fmt.Println("Hello, playground") 
    brandName := "home;compute furniture;computer" 
    filterVal := "(?i)compute\b" 
    regexMatch, _ := regexp.MatchString(filterVal, brandName) 
    fmt.Println(regexMatch) 
} 

當我使用\ b時,此函數返回false。請幫忙

+0

我還沒有在Go中玩過正則表達式,但是這裏常見的問題是用作字符串和正則表達式引擎的轉義字符的''''''。它可能正在被字符串吞噬,所以正則表達式引擎從來沒有看到它。嘗試雙重逃脫? –

+0

謝謝亞當斯密。來自Anar-G的解決方案非常完美 – pritesh

回答

5

雙引號經常吞下\。始終將raw strings與正則表達式,SQL等結合使用。

filterVal := `(?i)compute\b` 

遊樂場:http://play.golang.org/p/ePzZf5uLtw

+0

太棒了,謝謝Ainar-G提供如此快速的回覆。它工作完美。 – pritesh

+0

用三重反引號將反斜槓括起來進行格式化工作。在被問到的問題中有一種奇怪的現象! :) –

相關問題