поиск слова по заданному шаблону - PullRequest
0 голосов
/ 05 июля 2019

Я хочу получить слово 'MASTER_INACTIVE' в строке 'p_esco_link->state = MASTER_INACTIVE; /*M-t10*/' путем поиска выражения reg 'p_esco_link->state =', чтобы найти следующее слово.

Я должен заменить дату доступа к функциям API.Я пытаюсь использовать некоторые выражения в Python 3.6, но это не работает.

pattern = '(?<=\bp_esco_link->state =\W)\w+'

if __name__ == "__main__":

    syslogger.info(sys.argv)

    if version_info.major != 3:

        raise Exception('Olny work on Python 3.x')

    with open(cFile, encoding='utf-8') as file_obj:
        lineNum = 0
        for line in file_obj:
            print(len(line))
            re_obj = re.compile(pattern)
            result = re.search(pattern, line)
            lineNum += 1
            #print(result)
            if result:
                print(str(lineNum) + ' ' +str(result.span()) + ' ' + result.group())

исключенный модуль re python может найти позицию 'MASTER_INACTIVE' и поместить ее в result.group ().сообщение об ошибке в том, что модуль python re ничего не находит.

1 Ответ

0 голосов
/ 05 июля 2019

Ваш шаблон работает нормально,

enter image description here

Просто измените нижнюю строку в вашем коде,

pattern = r'(?<=\bp_esco_link->state =\W)\w+'  # add r prefix

Проверьте этот пример работы, я добавил line в качестве вашей строки.

import re

pattern = r'(?<=\bp_esco_link->state =\W)\w+'
line = 'p_esco_link->state = MASTER_INACTIVE; /*M-t10*/'

re_obj = re.compile(pattern)
result = re.search(pattern, line)

print(result.span())  # (21, 36)
print(result.group())  # 'MASTER_INACTIVE'

Проверьте приведенный ниже вопрос, чтобы лучше понять префикс 'r',

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