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)),
(行)
如果匹配:
打印匹配组(“注册名称”)
谢谢你,马丁。谢谢你的帮助。