这是一个代码,用于查明示例.c文件中是否存在注释嵌套,但我得到了这个错误:无需重复。有人能告诉我哪里错了吗?
import re
with open('sample.c',mode='r') as myfile:
flist = myfile.readlines()
flag1 = False
for j in range(len(flist)):
if re.search('/*',flist[j]):
if flag1:
print(f'Warning: Nested comment at line number {j+1}')
else:
flag1 = True
if flag1:
if re.search('*/',flist[j]):
flag1 = False
在Python正则表达式(RE(语法中,*
是一个特殊字符,表示前一RE的0个或多个重复的匹配。模式'*/'
之所以说"repeatnothing",是因为"没有什么可重复的"。如果不使用repeat说明符,那么要做的就是用字符转义它,比如:
*
。修改后的行使程序按预期工作:
if re.search('/*',flist[j]):
...
if re.search('*/',flist[j]):
这仍然不能处理注释嵌套发生在同一行的情况。
/* this is a /* nested comment */ */
为此,我们需要匹配/*
的多个实例。以下修改可以做到这一点。
if flag1 or re.search('/*.*/*',flist[j]):
print(f'Warning: Nested comment at line number {j+1}')