Например, файл содержит несколько строк, некоторые из которых выглядят так:
--EX "ABCDEFG"
Чтобы проверить соответствие строки, я создал следующее регулярное выражение:
^--EX\ \".*\"$
У меня вопрос, могу ли я как-нибудь извлечь содержимое .*
, чтобы просто получить ABCDEFG
? Подходят ли для этого регулярные выражения?
3 ответа
Заключите в скобки ту деталь, которую хотите получить.
^--EX\ \"(.*)\"$
Тогда в любом вашем коде он будет соответствовать 1, большинство реализаций регулярных выражений подразумевают, что совпадение 0 является полным совпадением, а совпадение 1 будет первым набором скобок и так далее.
Вы можете получить его через sed:
$ echo "--EX "ABCDEFG"" | sed 's/^--EX \(.*\)$/\1/'
ABCDEFG
В командной строке вы должны ввести свою команду точно так, как показано здесь:
sed -e "s/^--EX \"\(.*\)\"$/\\1/g" filename
Похожие вопросы
Новые вопросы
regex
Регулярные выражения предоставляют декларативный язык для сопоставления шаблонов в строках. Они обычно используются для проверки, синтаксического анализа и преобразования строк. Поскольку регулярные выражения не полностью стандартизированы, все вопросы с этим тегом должны также включать тег, определяющий применимый язык программирования или инструмент.