首页 > 解决方案 > Python使用正则表达式从javascript中提取文本

问题描述

我有一些 javascript 文本:

NCIA.username = 'filler@school.edu'; 
NCIA.user_id = '5bad4c16260c175e8660ae19'; 
NCIA.user_rights = '1'*1; 
if (empty(NCIA.lti_info) || NCIA.lti_info.valid_connection == false) NCIA.catalog_cookie=true; 
NCIA.alias_activity_id='';
NCIA.activity_id='560a8cc65e4ef62276c1a2f0';

我想使用正则表达式来提取 NCIA.username 和 NCIA.activity_id 的值。有什么好的方法可以同时提取吗?

标签: javascriptpythonregex

解决方案


这应该做你想要的。NCIA正则表达式在行首(或可能在一些空格之后)查找;一个.; username或之一activity_id;其次是=,可能被空格包围;最后是单引号内的值:

import re
js = """NCIA.username = 'filler@school.edu'; 
NCIA.user_id = '5bad4c16260c175e8660ae19'; 
NCIA.user_rights = '1'*1; 
if (empty(NCIA.lti_info) || NCIA.lti_info.valid_connection == false) NCIA.catalog_cookie=true; 
NCIA.alias_activity_id='';
NCIA.activity_id='560a8cc65e4ef62276c1a2f0';"
"""
regex = re.compile('^\s*NCIA\.(username|activity_id)\s*=\s*\'([^\']+)\';', re.MULTILINE)
print regex.findall(js)

输出

[('username', 'filler@school.edu'), ('activity_id', '560a8cc65e4ef62276c1a2f0')]

rextester 上的演示


推荐阅读