【发布时间】:2021-10-31 16:48:51
【问题描述】:
我有一个用例,我可以有一个可以包含任何内容的文本字符串。我想要实现的是替换给定字符串中的某个模式。
假设我给了字符串
:es1
es2
aaes1aa
:es3,
es1:
ees1,
ees1
{
"es1 :
我在这里尝试做的是假设我必须替换此字符串中的所有 es1 但有一个条件。它必须以[, | ; | : | " | ' | \\ | \s] 结尾或开头。接受:es1、es1,、es1: 等,但不接受eees1sss。
我试过 ([, | ; | : | " | ' | \\ | \s])(es1)([, | ; | : | " | ' | , | \s]) 这样的东西,但我不认为这是我需要的。
围棋程序:
match := regexp.MustCompile(`([, | ; | : | " | ' | \\ | \s])(es1)([, | ; | : | " | ' | , | \s])`)
test := `:es1
es2
aaes1aa
:es3,
es1:
ees1,
ees1
{
"es1 :`
fmt.Println(match.ReplaceAllString(test, "$1es4$3"))
输出:
es2
aaes1aa
:es3,
:
ees1,
ees1
{
:
我希望我的输出更像
:es4
es2
aaes1aa
:es3,
es4:
ees1,
ees1
{
"es4 :
【问题讨论】:
-
e:es1呢? -
应该匹配。因为es1后面有分隔符。但前提是 e:es1 也以分隔符之一结尾或者是字符串中的最后一个字符
-
第一个单词和最后一个单词也是允许的。 es1: 或文本中的 :es1
es1: .....some text. ..:es1