首页 > 解决方案 > 有没有办法用 grep 从正则表达式组中排除最后一次出现的字符

问题描述

我想编写一个匹配以下行的正则表达式:

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 '[^\(]\( [^ ] \)'

但它不起作用,因为括号之间可能存在有效空格。

我的问题是:有没有办法从正则表达式组中排除最后一次出现的字符?

标签: regexbashgrep

解决方案


在字面上,我想匹配在左括号之后有任何空格或在右括号之前有任何空格的行。

您可以grep交替使用它:

grep '([[:blank:]]\|[[:blank:]])' file
  • 在默认grep正则表达式模式 (BRE) 中,无需转义()
  • [[:blank:]]匹配空格或制表符
  • 你需要|在 BRE中逃脱

推荐阅读