正则表达式查找字符串和反斜杠

时间:2019-02-05 16:28:04

标签: regex go

我有这些字符串,它们可以通过多种方式出现,例如:

id=PS\\ Old\\ Gen, value=34id=Code\\ Cache,value=22

我希望使用一个正则表达式将=,之后的所有内容提取为:PS\\ Old\\ GenCode\\ Cache等。

我编写了以下正则表达式,但似乎无法在,之前得到最后一个单词。

(([a-zA-z]+)\\{2})+

有什么想法吗?这是围棋语言。

3 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式来捕获来自group1的文本,

id=([^,=]*),

说明:

  • id=-完全匹配id=
  • ([^,=]*)-匹配,=以外的任何字符零次或更多次,并以第一种分组方式捕获
  • ,-匹配逗号

Demo

示例Go代码,

var re = regexp.MustCompile(`id=([^,=]*),`)
var str = `id=PS\\ Old\\ Gen, value=34 id=Code\\ Cache,value=22`

res := re.FindAllStringSubmatch(str, -1)
for i := range res {
    fmt.Printf("Match: %s\n", res[i][1])
}

打印

Match: PS\\ Old\\ Gen
Match: Code\\ Cache

答案 1 :(得分:0)

id=([^,]+),之类的技巧可以做到吗?

捕获组1将包含您的比赛。实际操作here

答案 2 :(得分:0)

那呢? 请参阅 REGEX

package main

import (
    "regexp"
    "fmt"
)

func main() {
    var re = regexp.MustCompile(`(?mi)id=([^,]+)`)
    var str = `id=PS\\ Old\\ Gen, value=34 and id=Code\\ Cache,value=22`

    for i, match := range re.FindAllString(str, -1) {
        fmt.Println(match, "found at index", i)
    }
}