2014-01-29 4 views
0

У меня есть строка, как этотRegext получить выражение во втором ""

20130215 Бла-бла-бла adflkjas ааа = "12321343432" sdflkjsfdd ГЭБ = "A1-12345"

и мне нужно извлечь значение между вторыми кавычками. Как мне это сделать?

Это в хорошем состоянии.

+1

Будет ли всегда префикс 'bbb ='? Кроме того, не забудьте показать нам, что вы пробовали. –

+0

Какой язык/библиотека/инструмент/и т. Д.? – ruakh

+0

Вторая цитата будет всегда в конце строки? – nashuald

ответ

1

Регулярное выражение, которое вы ищете, это /^\d{8} .*=".*" .* .*="(.*)".*/.

Если вы уверены, что " не будет отображаться на вашем языке, то вместо этого вы можете использовать /^\d{8} [^"]*="[^"]*" [^"]* [^"]*="([^"]*)"[^"]*/.

Если вы можете дополнительно ограничить. * S, это может помочь, но поскольку вы были очень расплывчаты, насколько допустимые входы, я надеюсь, что этого будет достаточно. Это предполагает, что вы всегда ведете цифру в 8 цифр.

Groovy может потребоваться дополнительное экранирование (возможно, на двойных кавычках). Вам также может потребоваться удвоить бегство с Groovy, прошло некоторое время с тех пор, как я там поиграл. Я считаю, что ваш собеседник будет иметь всю строку, а затем вашу захваченную ценность.

Если то, что вы после семантика делает регулярное выражение захвата в Groovy, я хотел бы предложить http://groovy.codehaus.org/Tutorial+5+-+Capturing+regex+groups

Есть несколько хороших примеров.

1

Это позволит извлечь содержимое второй пары цитат:

($extracted = $line) =~ s/^[^"]*"[^"]*"[^"]*"([^"]*)"/$1/ 

начала строки следует ноль или более не кавычки следует цитаты следует ноль или более не кавычки следуют цитаты после чего следует ноль или более не кавычек, за которыми следует цитата, за которой следуют (ноль или более не кавычки), за которыми следует цитата. $ 1 извлекает (группу).

Это не Изначальное выражение регулярного выражения Groovy (это больше Perl-ish), но шаблон должен работать в Groovy.

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