2015-10-14 1 views
1

Я использую функцию regexp.matchString(), чтобы соответствовать шаблону регулярного выражения для моей строки. Я должен использовать границу слова, чтобы найти точное соответствие. Например, я хочу совместить «вычислять», но не «компьютер». Проблема в том, что моя строка будет иметь как «вычислить», так и «компьютер». Поэтому я хочу использовать границу слова. Я пробовал использовать \ b в нескольких онлайн-тестерах, и это сработало. Тем не менее, \ b, похоже, не работает для функции regexp.matchString(). Кто-нибудь знает, есть ли альтернатива \ b? или как я могу получить ожидаемый результат? Мой кодКак использовать ограничение слов ( b) с regexp.MatchString() в 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) 
} 

Эта функция возвращает мне ложь, когда я использую \ б. Пожалуйста, помогите

+0

Я еще не играл с регулярным выражением в Go, но общая проблема заключается в том, что '' '' '' '' используется как escape-символ как для строк, так и для механизма регулярных выражений. Вероятно, он сожрается струной, поэтому механизм регулярных выражений никогда не видит этого. Попробуйте двойное экранирование? –

+0

Спасибо, Адам Смит. решение от Anar-G отлично работало – pritesh

ответ

5

Двойные кавычки часто проглатывают \. Всегда используйте raw strings с регулярными выражениями, SQL и т. Д.

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

Детская площадка: http://play.golang.org/p/ePzZf5uLtw.

+0

Удивительно, спасибо Ainar-G за такой быстрый ответ. Он отлично работал. – pritesh

+0

заключает обратную косую черту в тройных обратных тактах, чтобы сделать форматирование. В странной параллели с вопросом, который задают! :) –