hitakiri
@hitakiri

Как в regexp.MustCompile условие передать переменную?

Есть функция:
func checkStr(a string, b string, c []string) {
	re := regexp.MustCompile("a(\\d+)b")
	for i := range c {
		fmt.Println(re.FindString(c[i]))
	}
}

Смысл в том, что необходимо передать передать переменные a и b в условие regexp.
  • Вопрос задан
  • 870 просмотров
Решения вопроса 2
Во-первых, удобнее использовать обратные `кавычки`, чтобы дважды не экранировать регулярку.
Чтобы вставить переменную в регулярку, её значение надо заэкранировать, чтобы случайно не передать управляющие символы. Делает это функция regexp.QuoteMeta().

https://play.golang.org/p/LiNMvek6j5
func checkStr(a string, b string, c []string) {
	re := regexp.MustCompile(regexp.QuoteMeta(a) + `(\d+)` + regexp.QuoteMeta(b))
	for _, str := range c {
		fmt.Println(re.FindString(str))
	}
}
Ответ написан
Комментировать
nikonor
@nikonor
Программист go, perl
У меня один вопрос по последним вопросам тут: народ, вы доки читаете? Или сразу искать тут или на стеке?

MustCompile принимает в качестве параметрам строку, как получить строку, я думаю, объяснять не надо? или про Sprintf надо рассказать?

https://play.golang.org/p/OFqebhv_dh
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы