【发布时间】:2009-11-01 12:52:59
【问题描述】:
我需要过滤所有以字母开头的单词,后跟零个或多个字母或数字,但没有特殊字符(基本上可以用于 c++ 变量的名称)。
egrep '^[a-zA-Z][a-zA-Z0-9]*'
这适用于诸如“a”、“ab10”之类的词,但它也包括诸如“b.b”之类的词。我知道表达式末尾的 * 是问题。如果我将 * 替换为 +(一个或多个),它会跳过仅包含一个字母的单词,所以它没有帮助。
编辑: 我应该更准确。如上所述,我想找到具有任意数量的可能单词的行。这是一个例子:
int = 5;
cout << "hello";
//some comments
在这种情况下,它应该打印上面的所有行,因为它们都包含至少一个符合所描述条件的单词,并且行不必以字母开头。
【问题讨论】:
-
这里的一个问题是 ^ 指的是一行的开头,但是您对包含单词的任何行感兴趣。我建议进行修改。