ack: Экранирование одинарных кавычек при предоставлении регулярного выражения

#regex #unix #pcre #ack

Вопрос:

Я использую ack для поиска всех значений ширины, заключенных в одинарные или двойные кавычки.

Например: width="23" , width='420'

Регулярное выражение Pal подтверждает /width=("|')d 1/g , что это правильное регулярное выражение для работы. Однако мне трудно предоставить это регулярное выражение ack.

<prompt>$ ack 'width=("|')d 1' <— Побег ' в регулярном выражении вроде ' не помог

<prompt>$ ack 'width=("|\')d 1' <— Ни один не сделал этого.

Есть какие-нибудь идеи?

Комментарии:

1. пробовать "width=("|')d 1" . Удачи.

2. Или 'width=("|'"'"')d 1'

3. @Shawn.. Не хотели бы вы предоставить это в качестве ответа? Это сработало для меня. Большое спасибо.

Ответ №1:

 "width=['"]d ['"]"
 

работает на меня. Квадратные скобки определяют набор символов, содержащих ' (сами по себе) и " (выделенные из-за окружающих двойных кавычек).

Он также работает с grep, но вам нужна эта -P опция, потому d что она не входит в стандартное регулярное выражение grep.