2014-08-01 4 views
-1

Как можно захватить полужирным частей:RegEx Захват нескольких переменных

"_ID": "12345abcd",

"_rev": "1- abti-2745",

"вопрос": "Сколько лет вы?",

Мне нужно сделать все это на одном выражении RegEx.

Это то, что я до сих пор:

/("_id": "(.*?)")|("_rev": "(.*)")/is 

или

/"_id": "(.*)",.*?"_rev": "?(.*)"?,/is 
+3

Для какого языка? – sp00m

+0

Как выглядят данные? Является ли это на нескольких строках, как показывает сообщение? Что вы пробовали? Кроме того, почему вы чувствуете, что это нужно делать во всех выражениях? – unholysampler

+0

Вот и все, с чем мы должны работать. – user3899893

ответ

0

Если вы не хотите использовать. Смотри вперед, смотреть-задом, Вы можете попробовать:

"[^"]*":\s"([^"]*)", 

Выделенная область находится в первой и только захватывая группы.

+0

op не хотят захватывать '1-'. –

0

Вы можете попробовать ниже регулярное выражение,

"_?(?:id|rev|question)":\s*"(?:.*?-)?([^"]*)", 

DEMO

Объяснение:

  • _? символ Дополнительный Подчеркивание.
  • (?:id|rev|question)": Группа не с захватом, которая соответствует строке id или rev или question, а также следующие ": символов.
  • \s* Соответствует нулю или больше символов пробела.
  • (?:.*?-)? Самый короткий матч до первого - символ. ? после того, как группа, не связанная с захватом, делает ее необязательной.
  • ([^"]*) Захватывает любой символ не из " ноль или более раз.
  • ", Соответствует буквам ", Знаки.
+0

Я думаю, что '' _? (?: id | rev | question) "является слишком буквальным. Почему бы не '' [^ "] +" '. Это будет работать только для тех, у которых есть' id' 'rev' и' question'. [Посмотрите] (http://regex101.com/r/fV5oS0/7) и [более общее регулярное выражение] (http://regex101.com/r/fV5oS0/8) – skamazin

+0

нет, он будет соответствовать любому charcter, а не '' 'один или несколько раз. Я помещал указанное конкретное регулярное выражение, потому что op включал строки 'rev',' id' в свой шаблон. Если он намеревался создать общее регулярное выражение, то вашего будет достаточно. –

+0

да, для общих '' [^ "] +": \ s * "(?:. *? -)? ([^"] *) ",' Было бы полезно. –

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