Golang:使用Regex提取数据

我正在尝试提取 $ {} </ code>中的所有数据。</ p>

例如,从此字符串提取的数据应为 abc </ code>。</ p>

  git commit -m'$ {abc}  '
</ code> </ pre>

这是实际代码:</ p>

  re:= regexp.MustCompile(“ $ {*}  “)
match:= re.FindStringSubmatch(command)
</ code> </ pre>

但这不起作用,知道吗?</ p>
</ div>

展开原文

原文

I'm trying to extract whatever data inside ${}.

For example, the data extracted from this string should be abc.

git commit -m '${abc}'

Here is the actual code:

re := regexp.MustCompile("${*}")
match := re.FindStringSubmatch(command)

But that doesn't work, any idea?

3个回答

You need to escape $, { and } in the regex.

re := regexp.MustCompile("\\$\\{(.*?)\\}")
match := re.FindStringSubmatch("git commit -m '${abc}'")
fmt.Println(match[1])

Golang Demo

In regex,

$ <-- End of string
{} <-- Contains the range. e.g. a{1,2}

You can also use

re := regexp.MustCompile(`\$\{([^}]*)\}`)
dongyan1625
dongyan1625 我认为另一个答案是不正确的。 +? 和*? 是不同的量词。 在正则表达式中,每个符号都很重要,并且可以大大改变输出。
4 年多之前 回复
duancu4731
duancu4731 它已经在另一个答案..所以我没有更新我的
4 年多之前 回复
dongmei1988
dongmei1988 提示:建议使用原始字符串文字定义正则表达式模式。 例如。 re:= regexp.MustCompile(\ $ \ {(。*?)\}
4 年多之前 回复



因为 $ </ code>, {</ code>和} </ code>全部 在正则表达式中有特殊含义,需要反斜杠以匹配这些文字字符,因为 * </ code>不能那样工作,并且因为您实际上并未包括要捕获的数据的捕获组 捕获。 尝试:</ p>

  re:= regexp.MustCompile(\ $ \ {。+?)\}
</ code> </ pre>
</ DIV>

展开原文

原文

Because $, { and } all have special meaning in a regex and need to be backslashed to match those literal characters, because * doesn't work that way, and because you didn't actually include a capturing group for the data you want to capture. Try:

re := regexp.MustCompile(`\$\{.+?)\}`)

douduan5073
douduan5073 OP模式中的*使我认为{}中的字符串可以为空。 因此,Rock的答案似乎更接近OP的需求。
4 年多之前 回复



尝试重新:= regexp.MustCompile(\ $ \ {(。*)})</ code>
*是一个量词,您需要量化。 。</ code>会匹配所有内容。</ p>
</ div>

展开原文

原文

Try re := regexp.MustCompile(\$\{(.*)\}) * is a quantifier, you need something to quantify. . would do as it matches everything.

dougaopu7938
dougaopu7938 我不是说不是,他想知道为什么他的表情不起作用,我告诉他为什么。
4 年多之前 回复
dongnaosuan5407
dongnaosuan5407 。*是一个贪婪的子模式,可能会引起火灾。 请谨慎使用。 它可能仅适用于当前示例,但不适用于现实生活中的场景。
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐