regex来匹配变量,并从python中匹配行的引号中获取单词

regex来匹配变量,并从python中匹配行的引号中获取单词,python,regex,Python,Regex,假设我有这个变量 myvar = "81" 我想搜索包含如下字符串的行,并在引号中找到单词: static public Register myReg1 = new Register("D4_STAT_1", 81); static public Register myReg2 = new Register("D5_STAT_1", 819); 在这种情况下,如果我想通过搜索文件中的myvar来查找“D4_STAT_1”,我知道如何读取每一行,但我的问题是如何搜索变量并准确地获取引号中的单词

假设我有这个变量

myvar = "81"
我想搜索包含如下字符串的行,并在引号中找到单词:

static public Register myReg1 = new Register("D4_STAT_1", 81);
static public Register myReg2 = new Register("D5_STAT_1", 819);
在这种情况下,如果我想通过搜索文件中的myvar来查找“D4_STAT_1”,我知道如何读取每一行,但我的问题是如何搜索变量并准确地获取引号中的单词

谢谢

>>> import re
>>> s = '''
... static public Register myReg1 = new Register("D4_STAT_1", 81);
... static public Register myReg2 = new Register("D5_STAT_1", 819);
... '''
>>> myvar = "81"
>>> re.search('static public Register \w+ = new Register\("(\w+)", %s\);' % re.escape(str(myvar)), s).group(1)
'D4_STAT_1'
根据具体情况(输入文件),还可以使用更简单的:

>>> re.search('Register\("(\w+)", %s\);' % re.escape(str(myvar)), s).group(1)
'D4_STAT_1'

您可以这样做:

import re

myvar = 81

with open("myfile") as _file:
    for line in _file:
        match = re.search(('\((?P<register_name>".+"), %s\)' % re.escape(str(myvar))),
                          line)
        if match:
            print match.group("register_name")
重新导入
myvar=81
打开(“myfile”)作为_文件:
对于_文件中的行:
match=re.search(('\((?P“+”),%s\)'%re.escape(str(myvar)),
(行)
如果匹配:
打印匹配组(“注册名称”)

谢谢你,马丁。谢谢你的帮助。