0

我想得到'MASTER_INACTIVE'字符串中的单词:

'p_esco_link->state = MASTER_INACTIVE; /*M-t10*/'

通过搜索 reg-expression'p_esco_link->state ='来查找以下单词。

我必须替换对 API 函数的日期访问。我在 python 3.6 中尝试了一些 reg-expression,但它不起作用。

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())

Python re 模块除外,可以找到 的位置'MASTER_INACTIVE'并将其放入result.group(). 错误信息是 Python re 模块什么也没找到。

4

1 回答 1

0

你的模式工作正常,

在此处输入图像描述

只需更改代码中的以下行,

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'前缀,

于 2019-07-05T07:39:45.180 回答