2016-02-03 2 views
0

Я хочу, чтобы извлечь содержимое между первым и последним {}Regex извлечение первого/последнего появления

{"Command":{"Version": "1.1","Body":{}}} 

Я попытался это регулярное выражение, почему он не работает, ничего не найдено.

^\\{(.*?)\\}$ 

Вы не можете помочь?

+0

Используйте '(? S)^\\ {(. *) \\} $' –

+1

Nah. Но [Джексон] (https://github.com/FasterXML/jackson) может. – Mena

+0

Почему regex? Это, как правило, выполнимо с более простыми языковыми функциями. – Slavic

ответ

0

Это работает в MS RegEx:

var regEx = "\\{{1}?(.*)\\}{1}?"; 

Он ищет первый (ленивый) экземпляр {, то получает все символы до жадного "}". Имейте в виду, что если у вас есть:

{<stuffYouWant>}{<stuffYouWant>} на одной линии ...

вы получите:

<stuffYouWant>}{<stuffYouwant> в одном захвате.

ПРИМЕЧАНИЕ: ваш не работает, потому что вы ищете все символы (.*), которые не имеют {, но также имеют }. ему нужно место, чтобы начать, иначе он будет хватать все до последнего }, а затем увидеть, что он имеет { и дисквалифицирует этот захват.

Смежные вопросы