【发布时间】:2020-04-06 23:13:18
【问题描述】:
我有以下 key=value 对作为一行字符串的示例
start=("a", "b") and between=("range(2019, max, to=\"le\")") and end=("a", "b")
在 golang 中使用正则表达式我想提取 key=value 对,如下所示
start=("a", "b")between=("range(2019, max, to=\"le\")")end=("a", "b")
stackoverflow 上有解决方案,但不适用于 golang 正则表达式。
有一个链接指向我使用 golang 正则表达式失败的尝试:regex101 golang flavor
我将不胜感激。
【问题讨论】:
-
strings.Split(x, " and ") -
对于给定的示例,您的解决方案有效,但我可能不适用于 start=("a", "b and a") 之类的值。
-
不要为此使用正则表达式。写一个解析器,超级简单。
-
一个快速的unrolled 想法:
\w+=\([^)(]*(?:\([^)(]*\)[^)(]*)*\)但是如果涉及到任意嵌套括号并且没有可用的正则表达式递归,解析器是唯一的解决方案。如果是关于转义的引用,你也可以试试\w+=\(".*?[^\\]"\)