【问题标题】:Golang Split String with RegexpGolang 使用正则表达式拆分字符串
【发布时间】:2022-11-15 19:05:11
【问题描述】:

我有一个字符串,我用 regexp 包拆分了这个字符串。但是我无法创建我需要的正则表达式。

正则表达式代码行:

v = "@636e0e0eac0bd25cd5df92a3$636e0e49ac0bd25cd5df92a5.result.result[0].code.xTrim()"
r, _ := regexp.Compile(`(@[a-zA-Z0-9]+\$[a-zA-Z0-9]+)(.*)`)
variableParts := r.FindStringSubmatch(v)

VariablesParts 数组:

0:“@636e0e0eac0bd25cd5df92a3$636e0e49ac0bd25cd5df92a5.result.result[0].code.xTrim()”

1:“@636e0e0eac0bd25cd5df92a3$636e0e49ac0bd25cd5df92a5”

2:“.result.result[0].code.xTrim()”

这是我想要的结果:

数组长度可以更改,但数组应包含这 4 个字符串。

0:“@636e0e0eac0bd25cd5df92a3$636e0e49ac0bd25cd5df92a5.result.result[0].code.xTrim()”

1: "@636e0e0eac0bd25cd5df92a3$636e0e49ac0bd25cd5df92a5"

2:“.result.result[0].code.xTrim()”

3: ".xTrim()"

我怎样才能得到这个结果。我需要哪个正则表达式字符串?

【问题讨论】:

  • 你为什么使用正则表达式? strings.Split 会更简单(也更快)
  • 至于你的正则表达式的问题:你最后的意思可能是\.(.*)

标签: regex go


【解决方案1】:

您可以用(.*(.[^.]*))$ 替换最后的(.*) 部分并使用

(@[a-zA-Z0-9]+$[a-zA-Z0-9]+)(.*(.[^.]*))$

请参阅regex demo细节:

  • (@[a-zA-Z0-9]+$[a-zA-Z0-9]+) - 第 1 组:一个 @ 字符,然后是一个或多个字母数字字符,然后是一个 # 字符,然后是一个或多个字母数字字符
  • (.*(.[^.]*)) - 第 2 组:除换行符以外的任何零个或多个字符,然后是第 3 组:.,除. 字符外的零个或多个字符
  • $ - 在字符串的末尾。如果右侧可以有更多文本,请删除。

【讨论】:

    猜你喜欢
    • 2017-02-23
    相关资源
    最近更新 更多