В Python синтаксис регулярного выражения (RE), *
- это специальный символ , указывающий совпадение 0 или более повторов предыдущего RE. Шаблон '*/'
говорит: «Ничего не повторяй», потому что «нечего повторять». Если вы не используете спецификатор повтора, вам нужно экранировать его символом \
, например: \*
. Модифицированные строки заставляют программу работать как задумано:
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}')