Есть ли способ исключить последнее вхождение персонажа из группы регулярных выражений с помощью grep - PullRequest
0 голосов
/ 17 октября 2018

Я хочу написать регулярное выражение, которое соответствует следующим строкам:

int func ( int argument, char* str)
for( int i = 0; i < 25; i++)
if( true )

, но не этим:

int func (int argument char* str)
for(int i = 0; i i < 25; i++)
if(true)

В буквальном смысле я хочу сопоставить строки, в которых естьлюбые пробелы после открывающей скобки или любые пробелы, предшествующие закрывающей скобке.

Я начал с написания следующего регулярного выражения:

grep -E '[^\(]\( [^ ] \)'

Но это не работает, поскольку между действительными пробелами могут бытьскобка

Мой вопрос: есть ли способ исключить последнее вхождение персонажа из группы регулярных выражений?

1 Ответ

0 голосов
/ 17 октября 2018

В буквальном смысле я хочу сопоставить строки, в которых есть пробелы после открывающей скобки или любые пробелы, предшествующие закрывающей скобке.

Вы можете использовать grep счередование:

grep '([[:blank:]]\|[[:blank:]])' file
  • По умолчанию grep режим регулярных выражений (BRE) не требуется экранировать ( и )
  • [[:blank:]] соответствует пробелу илисимвол табуляции
  • Вам нужно экранировать | в BRE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...