查找格式错误的带引号的字符串的正则表达式

时间:2019-05-13 00:10:25

标签: regex go

我正在尝试为具有起始引号但没有结束引号的子字符串构建正则表达式。下面是一个示例字符串

"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 个答案:

答案 0 :(得分:3)

使用正则表达式可以完成所有操作..将花费更多时间来完善解决方案。但是,使用一些字符串函数会使您变得更容易。

希望这会有所帮助!

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