2015-08-23 2 views
0

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

(McSweeney 2010) (Harpers октября 2008) (McSweeney 2011) (Некоторые Автор, McSweeney, Some Other Автор, 1995)

и я хочу, чтобы вернуться все вводное содержание, которое содержит "McSweeney" где-то внутри, так

(McSweeney 2010)

(McSweeney 2011)

(Некоторые Автор, McSweeney, Some Other Автор, 1995)

Возможно ли это в одном регулярном выражении? Я был в состоянии получить все вводное содержимое с помощью

\((.*)\) 

но ломается, когда я пытаюсь ввести слова в шаблон.

+1

Что 'содержание parenthetical' означает? Что бы соответствовало '(Some Author, (McSweeney (Joe), Some Other Author, 1995)' '(McSweeney (Joe)"? – sln

ответ

2

Попробуйте это GNU Grep:

grep -oE '\([^)]*McSweeney[^)]*\)' file 

Выход:

 
(McSweeney 2010) 
(McSweeney 2011) 
(Some Author, McSweeney, Some Other Author, 1995) 

или со строкой:

string="McSweeney" 
grep -oE '\([^)]*'"$string"'[^)]*\)' file 
Смежные вопросы