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

Я пытаюсь создать регулярное выражение для подстроки, которая имеет начальную кавычку, но не имеет конечной кавычки. Ниже приведен пример строки

"The fish was 2 long. I said: Give me that fish!.
The fish was 2" long. I said: Give me that fish!.
"The fish was 2 long. I said: Give me that fish!."
The fish "was 2 long". I said: "Give me that fish!.

Таким образом, допустимый вывод для выражения будет

String 1 - The fish was 2 long. I said: Give me that fish!
String 2 -  long. I said: Give me that fish!.
String 3 - No output
String 4 - Give me that fish!.

Любые мысли, как я могу построить регулярное выражение.

1 Ответ

3 голосов
/ 13 мая 2019

Можно выполнить все с помощью регулярных выражений. Потребуется еще некоторое время, чтобы усовершенствовать решение.Но использование некоторых строковых функций облегчит вам задачу.

Надеюсь, это поможет !!

package main

import (
"fmt"
"regexp"
"strings"
)

func main() {
str := `
    "The fish was 2 long. I said: Give me that fish!.
The fish was 2" long. I said: Give me that fish!.
"The fish was 2 long. I said: Give me that fish!."
""sdfsdf
`
splitStr := strings.Split(str, "\n")
re := regexp.MustCompile(`"{1}[A-Za-z0-9 .:!]+"{0}[A-Za-z0-9 .:!]+$`)
for _,v := range splitStr {
    if len(strings.Trim(v, " ")) >= 0{
    // some extra check
    if strings.Count(v, "\"") % 2 == 1 {
        fmt.Println( re.FindString(v))
    }

    } 
}

}

Пример кода доступен здесь: https://play.golang.org/p/LYte6FRocv3

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