我有一些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的值。是否有提取两者的好方法?
答案 0 :(得分:0)
这应该做您想要的。正则表达式在行的开头(或可能在某些空格之后)寻找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')]