Regex, чтобы найти строку и обратную косую черту - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть эти строки, и они могут быть различными способами, такими как:

id=PS\\ Old\\ Gen, value=34 и id=Code\\ Cache,value=22 и т. Д.

Я хотел бы получить регулярное выражение, которое будет извлекать что угодно послеот = до ,, в общем: PS\\ Old\\ Gen и Code\\ Cache и т. д.

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

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

Есть мысли?Это для го языка.

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019

Что-то вроде id=([^,]+), делает трюк?

Группа захвата № 1 будет содержать ваш матч.Смотрите это в действии здесь

0 голосов
/ 05 февраля 2019

Как насчет этого? СМ. 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)
    }
}
0 голосов
/ 05 февраля 2019

Вы можете использовать это регулярное выражение и захватить ваш текст из группы 1,

id=([^,=]*),

Объяснение:

  • id= - Совпадения id= буквально
  • ([^,=]*) - соответствует любому символу, кроме , или = ноль или более раз, и захватывает в первом шаблоне группировки
  • , - соответствует запятой

Демонстрация

Образцы кодов 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...