我需要过滤所有行,其中的单词以字母开头,后跟零个或多个字母或数字,但没有特殊字符(基本上可以用于c ++变量的名称).
egrep '^[a-zA-Z][a-zA-Z0-9]*'
Run Code Online (Sandbox Code Playgroud)
这适用于诸如"a","ab10"之类的单词,但它也包括像"bb"这样的单词.我明白*在表达结束时是*问题.如果我用+(一个或多个)替换*,它会跳过只包含一个字母的单词,所以它没有帮助.
编辑:我应该更精确.我想找到具有任意数量的可能单词的行,如上所述.这是一个例子:
int = 5;
cout << "hello";
//some comments
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它应该打印上面的所有行,因为它们都包含至少一个符合所描述条件的单词,而行不必以字母开头.
您的解决方案看起来大致就像这个例子.在这种情况下,正则表达式要求"单词"前面有空格或行首,然后是空格或行尾.您需要根据需要修改边界要求(带括号的东西).
'(^| )[a-zA-Z][a-zA-Z0-9]*( |$)'
Run Code Online (Sandbox Code Playgroud)