有人可以帮我用正则表达式解析这个字符串吗?

时间:2010-07-16 16:12:11

标签: ruby regex

我对正则表达式不是很好,但这就是我得到的(要解析的字符串和正则表达式在此页面上)http://rubular.com/r/iIIYDHkwVF

只需要匹配那个确切的测试字符串

3 个答案:

答案 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,第二个值,依此类推。

请注意,密钥应为非空("([^"]+"),但值可能为空(使用*代替+)。

相关问题