Регулярное выражение для поиска повторного числа длины n - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь использовать golang regexp, чтобы найти повторение цифр. Вот то, что я пытался найти повторяющиеся цифры длины 8. Я пытался следовать предложению в Regex, чтобы найти повторяющиеся числа

    testString := "11111111" 
    repetitive := `^(\d)\\1{8}$`
    repetitiveR := regexp.MustCompile(repetitive)
    if repetitiveR.MatchString(testString) {
        fmt.Println("Match")
    } else {
        fmt.Println("No match")
    }

Это всегда дает мне результат "Нет совпадений". Еще один способ, который работает, это громоздко

  testString := "11111111" 
  repetitive := `^(0{8})|(1{8})|(2{8})|(3{8})|(4{8})|(5{8})|(6{8})|(7{8})|(8{8})|(9{8})$`
  repetitiveR := regexp.MustCompile(repetitive)
  if repetitiveR.MatchString(testString) {
    fmt.Println("Match")
  } else {
    fmt.Println("No match")
  }

Вывод: совпадение

Любые предложения

1 Ответ

1 голос
/ 14 апреля 2019

Если вам нужно поймать ровно восемь повторений одной и той же цифры в виде одного слова в начале строки, то это должно сработать:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    testString := "11111111"
    repetitive := "^0{8}$|^1{8}$|^2{8}$|^3{8}$|^4{8}$|^5{8}$|^6{8}$|^7{8}$|^8{8}$|^9{8}$"
    repetitiveR := regexp.MustCompile(repetitive)
    if repetitiveR.MatchString(testString) {
        fmt.Println("Match")
    } else {
        fmt.Println("No match")
    }
}

Примечание: ваше кубическое Например, regexp будет перехватывать слова из 8+ цифр, поэтому я немного исправил их.

Из официальный GitHub и, как уже упоминалось в комментариях:

RE2 не поддерживает конструкции, для которых известны только решения для возврата.Таким образом, обратные ссылки и проверочные утверждения не поддерживаются.

Кроме того, этот ответ может быть полезен в вашей ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...