Python извлечь текст из JavaScript с помощью регулярных выражений - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть некоторый текст 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.Есть ли хороший способ извлечь оба?

1 Ответ

0 голосов
/ 08 декабря 2018

Это должно делать то, что вы хотите.Регулярное выражение ищет 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...