Например, файл содержит несколько строк, некоторые из которых выглядят так:
--EX "ABCDEFG"

Чтобы проверить соответствие строки, я создал следующее регулярное выражение:
^--EX\ \".*\"$
У меня вопрос, могу ли я как-нибудь извлечь содержимое .*, чтобы просто получить ABCDEFG? Подходят ли для этого регулярные выражения?

1
MechMK1 29 Авг 2011 в 19:47

3 ответа

Лучший ответ

Заключите в скобки ту деталь, которую хотите получить.

^--EX\ \"(.*)\"$

Тогда в любом вашем коде он будет соответствовать 1, большинство реализаций регулярных выражений подразумевают, что совпадение 0 является полным совпадением, а совпадение 1 будет первым набором скобок и так далее.

2
glenn jackman 29 Авг 2011 в 17:19

Вы можете получить его через sed:

$ echo "--EX "ABCDEFG"" | sed 's/^--EX \(.*\)$/\1/'
ABCDEFG
1
Michał Šrajer 29 Авг 2011 в 16:01

В командной строке вы должны ввести свою команду точно так, как показано здесь:

sed -e "s/^--EX \"\(.*\)\"$/\\1/g" filename
1
Jack 29 Авг 2011 в 16:40