Может ли кто-нибудь помочь мне разобрать эту строку с помощью регулярного выражения? - PullRequest
0 голосов
/ 16 июля 2010

Я не очень хорошо разбираюсь в регулярных выражениях, но вот что я получил (строка для анализа и регулярное выражение на этой странице) http://rubular.com/r/iIIYDHkwVF

Это просто должно соответствовать этой тестовой строке

Ответы [ 3 ]

2 голосов
/ 16 июля 2010

Регулярное выражение:

^"AddonInfo"$(\n\s*)+^\{\s*

Он ищет

  • ^"AddonInfo"$ - строка, содержащая только "AddonInfo"
  • (\n\s*)+ - с последующимпо крайней мере на одну новую строку и, возможно, на множество пустых или пустых строк
  • ^\{\s* - и, наконец, строку, начинающуюся с {, за которой следует необязательный пробел

Чтобы разбить регулярное выражениев его составные части взгляните на ответ , который объясняет, начиная с основ .

Чтобы сопоставить всю строку, используйте

^"AddonInfo"$(\n\s*)+^\{(\s*".+?"\s+".+?"\s*\n)+^\}

Итак, после открытиявьющийся, вы ищете одну или несколько строк, каждая из которых содержит пару простых строк, разделенных кавычками (без экранирования).

1 голос
/ 16 июля 2010

Это работает:

^"AddonInfo"[^{]*{[^}]*}

Пояснение:

  • ^"AddonInfo" соответствует "AddonInfo" в начале строки
  • [^{]* соответствует всем следующим не { символам
  • { соответствует следующему {
  • [^}]* соответствует всем следующим, не } символам
  • } соответствует следующему }
0 голосов
/ 16 июля 2010

^"AddonInfo"(\s*)+^\{\s*(?:"([^"]+)"\s+"([^"]*)"\s+)+\}

Вы получите 1 доллар за указание на первый ключ, первое значение за 2 доллара, второй ключ за 3 доллара, 4 за второе значение и т. Д.

Обратите внимание, что ключ предназначен длябыть непустым ("([^"]+"), но значение может быть пустым (используется * вместо +).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...