Python Исключить комментарии с помощью re.search - PullRequest
0 голосов
/ 01 апреля 2020

Я ищу строку в строке, используя:

import re

myfile = "myfile.txt"
files = open(myfile, 'r').read().splitlines()
for line in file:
    if re.search("`this", line):
        print "bingo"

Это прекрасно работает. Однако я хочу исключить любые строки, которые являются комментариями. Комментарии в файле, из которого я читаю строки, могут иметь комментарии в виде //. Я не уверен, как исключить комментарии, хотя. Комментарии могут начинаться где угодно в строке, необязательно в начале строки.

Пример:

Я хочу исключить такие строки, как first_last = "name" //`this THAT, поскольку "this" находится в комментарии

1 Ответ

0 голосов
/ 01 апреля 2020

Это может быть сделано с отрицательным утверждением переменной длины, но для этого вам нужно использовать пакет regex, устанавливаемый из pip из репозитория PyPi. Регулярное выражение:

(?<!//.*)    # negative lookahead assertion stating that the following must not be preceded by // followed by 0 or more arbitary characters
`this        # matches `this

Код:

import regex as re

regex = re.compile(r'(?<!//.*)`this')
myfile = "myfile.txt"
with open(myfile, 'r') as f:
    for line in f: # line has newline character at end; call rstrip method on line to get rid if you want
        if regex.search(line):
            print(line, end='')

Regex Demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...