使用Python从html标记解析JSON
我使用BeautifulSoup从HTML页面获取以下代码片段。我很难剥离JSON(在FB_数据之后)。我猜我需要使用re.search,但我在正则表达式方面遇到了问题 该片段是:使用Python从html标记解析JSON,python,regex,json,python-2.7,Python,Regex,Json,Python 2.7,我使用BeautifulSoup从HTML页面获取以下代码片段。我很难剥离JSON(在FB_数据之后)。我猜我需要使用re.search,但我在正则表达式方面遇到了问题 该片段是: <script type="text/javascript"> var FB_DATA = { "foo": bar, "two": { "foo": bar, }}; var FB_PUSH = []; var
<script type="text/javascript">
var FB_DATA = {
"foo": bar,
"two": {
"foo": bar,
}};
var FB_PUSH = [];
var FB_PULL = [];
</script>
变量FB_数据={
“福”:酒吧,
“二”:{
“福”:酒吧,
}};
var FB_PUSH=[];
var FB_PULL=[];
我假设您的主要问题是在
与新行以外的任何内容匹配时使用*?
。使用s
点匹配换行符修改器,您可以非常简单地完成此操作:
(?s) (?# dot-match-all modifier)
var (?# match var literally)
\s+ (?# match 1+ whitespace)
FB_DATA (?# match FB_DATA literally)
\s* (?# match 0+ whitespace)
= (?# match = literally)
\s* (?# match 0+ whitespace)
( (?# start capture group)
\{ (?# match { literally)
.*? (?# lazily match 0+ characters)
\} (?# match } literally)
) (?# end capture group)
; (?# match ; literally)
您的JSON字符串将位于捕获组#1中
我假设您的主要问题是在
与新行以外的任何内容匹配时使用*?
。使用s
点匹配换行符修改器,您可以非常简单地完成此操作:
(?s) (?# dot-match-all modifier)
var (?# match var literally)
\s+ (?# match 1+ whitespace)
FB_DATA (?# match FB_DATA literally)
\s* (?# match 0+ whitespace)
= (?# match = literally)
\s* (?# match 0+ whitespace)
( (?# start capture group)
\{ (?# match { literally)
.*? (?# lazily match 0+ characters)
\} (?# match } literally)
) (?# end capture group)
; (?# match ; literally)
您的JSON字符串将位于捕获组#1中 从
FB_DATA = (\{[^;]*;)
看看哪种情况是不够的。从
FB_DATA = (\{[^;]*;)
看看在哪种情况下这还不够。到目前为止,你对正则表达式有什么看法?老实说,我甚至不知道从哪里开始。我讨厌发帖的时候没什么可讲的,但我只是在学习,我对regex不太在行。到目前为止,你对regex有什么看法?老实说,我甚至不知道从哪里开始。我讨厌发帖时没什么可讲的,但我只是在学习,我对正则表达式不太在行。是的,很高兴它有帮助:)是的,很高兴它有帮助:)