【发布时间】:2019-04-19 20:59:27
【问题描述】:
在这里敲我的头..
我正在尝试使用以声明 var Listdata = 开头并以 }; 结尾的正则表达式解析 javascript 变量“ListData”的全部内容的 html 源代码。
我找到了一个类似的解决方案:
Fetch data of variables inside script tag in Python or Content added from js
但我无法让它匹配整个正则表达式。
代码:
# Need the ListData object
pat = re.compile('var ListData = (.*?);')
string = """QuickLaunchMenu == null) QuickLaunchMenu = $create(UI.AspMenu,
null, null, null, $get('QuickLaunchMenu')); } ExecuteOrDelayUntilScriptLoaded(QuickLaunchMenu, 'Core.js');
var ListData = { "Row" :
[{
"ID": "159",
"PermMask": "0x1b03cc312ef",
"FSObjType": "0",
"ContentType": "Item"
};
moretext;
moretext"""
#Returns NoneType instead of match object
print(type(pat.search(string)))
不确定这里出了什么问题。任何帮助将不胜感激。
【问题讨论】:
-
你应该使用右手定界符,试试
'(?m)var ListData = (.*?)};$' -
@WiktorStribiżew 这也不匹配。
-
可以,有多行,用
'(?sm)var ListData = (.*?)};$' -
@WiktorStribiżew 是的,这行得通。如果你想写一个正式的答案,我会接受。我将不得不阅读 (?sm) 的作用。谢谢!
-
请注意,此模式仅依赖于尾随
};出现在行尾这一事实。真的是这样吗?.*?匹配任何 0+ 字符,尽可能少,直到行尾的 first};。 请将这些详细信息添加到问题中,因为这是一个重要的限制。
标签: python regex python-3.x