Регулярное выражение для строки после шаблона строки - PullRequest
0 голосов
/ 28 июня 2019

У меня есть такая строка (4 слова, разделенные точкой)

Exactfoobar.foobar-_nocaps.foobar-_nocaps.foobar-_caps

Мне нужно написать регулярное выражение, чтобы найти шаблон, как указано выше.

  1. Может быть 4 или более полей, разделенных точкой
  2. Первое слово должно быть точно Exactfoobar.
  3. 2-е и 3-е слово не может иметь заглавных букв, но может иметь -_
  4. 4-е слово и т. Д. Могут иметь заглавные буквы с -_

Я думал об использовании групп, но здесь это не работает:

^Exactfoobar\.([a-z0-9][a-z0-9_\-.])+([a-z0-9][a-zA-Z0-9_\-.])+$

Как мне подумать о сопоставлении строки с другой строкой. Возможно ли это?

Попытка сделать это в golang, но, похоже, не могу правильно понять приведенное выше регулярное выражение

package main

import (
    "fmt"
    "regexp"
)

func main() {

    var validID = regexp.MustCompile(`^ Exactfoobar\.([a-z0-9][a-z0-9_\-.])+([a-z0-9][a-z0-9_\-.])+$`)

    fmt.Println(validID.MatchString("Exactfoobar.somestring.some_other-string.someStringwithCaps"))


}

Результат:

false

Спасибо

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Вы можете использовать

^Exactfoobar(?:\.[a-z0-9][a-z0-9_-]*){2}(?:\.[a-zA-Z0-9][a-zA-Z0-9_-]*)+$

См. Демоверсию regex

  • ^ - начало строки
  • Exactfoobar - какое-то слово
  • (?:\.[a-z0-9][a-z0-9_-]*){2} - два повторения ., затем строчная буква или цифра и затем 0+ строчные буквы или цифры, _ или -
  • (?:\.[a-zA-Z0-9][a-zA-Z0-9_-]*)+ - 1 или более повторений
    • \. - точка
    • [a-zA-Z0-9] - буква или цифра
    • [a-zA-Z0-9_-]* - 0+ букв, цифр или _ или -
  • $ - конец строки.
0 голосов
/ 28 июня 2019
^Exactfoobar(?:\.[a-z0-9_\-]+){2}(?:\.[A-Za-z0-9_\-]+)+$

https://regex101.com/r/PJ9V0L/1

...