我对正则表达式不是很好,但这就是我得到的(要解析的字符串和正则表达式在此页面上)http://rubular.com/r/iIIYDHkwVF
只需要匹配那个确切的测试字符串
答案 0 :(得分:2)
正则表达式是
^"AddonInfo"$(\n\s*)+^\{\s*
正在寻找
^"AddonInfo"$
- 仅包含"AddonInfo"
(\n\s*)+
- 后跟至少一个换行符,可能还有很多空行或空行^\{\s*
- 最后一行以{
开头,后跟可选空格要将正则表达式分解为其组成部分,请查看answer that explains beginning with the basics。
要匹配整个字符串,请使用
^"AddonInfo"$(\n\s*)+^\{(\s*".+?"\s+".+?"\s*\n)+^\}
所以在开卷后,你正在寻找一行或多行,每行包含一对引号分隔的简单字符串(没有转义)。
答案 1 :(得分:1)
这个有效:
^"AddonInfo"[^{]*{[^}]*}
说明:
^"AddonInfo"
在一行开头匹配"AddonInfo"
[^{]*
匹配以下所有非{
字符{
与以下{
[^}]*
匹配以下所有非}
字符}
与以下}
答案 2 :(得分:0)
^"AddonInfo"(\s*)+^\{\s*(?:"([^"]+)"\s+"([^"]*)"\s+)+\}
您将获得$ 1指向第一个键,$ 2第一个键,$ 3秒键,$ 4,第二个值,依此类推。
请注意,密钥应为非空("([^"]+"
),但值可能为空(使用*
代替+
)。