2015-01-06 2 views
2

Я пытаюсь извлечь таблицу из строки запроса (например, 'select foo from bar limit 10' должен вернуть 'bar').Соответствующее слово продолжения, не заглядывая вперед в Go

Я считаю, что «(?<=\bfrom\\s)(\\w+)» - это то, что я искал, но оно не поддерживается пакетом Go regexp. (http://play.golang.org/p/MJ3DUk6uuC)

+0

Расширенные регулярные выражения функции прохладно и все, но вы редко нуждаются в них. –

ответ

3

Вы все еще можете обнаружить 'from xxx', не смотря на опережения синтаксис not supported по re2.
Поскольку вы должны были бы захватить 'from', вам необходимо удалить его из результата.

См playground:

r := regexp.MustCompile("(?:\\bfrom\\s)(\\w+)") 
res := r.FindAllString(strings.ToLower("select foo from bar limit 10"), 1) 
if len(res) != 1 { 
    panic("unable") 
} 
i := strings.LastIndex(res[0], " ") 
fmt.Println(res[0][i+1:], i) 

Выход:

bar 4 

 Смежные вопросы

  • Нет связанных вопросов^_^