我发现有关正则表达式的一些问题,但我似乎无法做到这一点。我想在我的模式中包含特定字符串的排除。我的用例是查找python文件中的所有行,这些行定义了具有除object
以外的超类的类。所以例如:
class Class1(Superclass): #match
class Class2(othersuperclass, Superclass): #match
class Class3(object): #no match
我可以使用以下正则表达式来匹配定义类的行。我确定它不是最佳的,但它是我拥有的并且有效:
grep -n '^[[:space:]]*class[[:space:]][[:space:]]*[[:alpha:]][[:alnum:]]*[[:space:]]*(.*):' *
但是我无法弄清楚如何排除有"对象"在parens里面。
编辑:我应该更清楚。我试图在我的文件系统中递归搜索文件。目前我在命令行中使用grep
,但如果有更好的命令行实用程序,我很高兴听到它。
答案 0 :(得分:0)
这将做你到目前为止告诉我们的事情:
$ awk '/^[[:blank:]]*class[[:blank:]]+[[:alpha:]_][[:alnum:]_]*[[:blank:]]*\(.*\):/ && !/\(.*object.*\)/' file
class Class1(Superclass): #match
class Class2(othersuperclass, Superclass): #match
但请注意您未包含在样本输入/输出中的其他情况。