Как конвертировать шаблоны регулярных выражений из Javascript в Python? - PullRequest
2 голосов
/ 07 мая 2019

Следующий код Javascript (который я не писал) использует регулярные выражения для извлечения луковых адресов v2 / v3 из кода.

со следующего сайта:

https://github.com/k4m4/onion-regex

'use strict';
const v2 = '[a-z2-7]{16}\.onion';
const v3 = '[a-z2-7]{56}\.onion';


const onion = opts => opts && opts.exact ?
    new RegExp(`(?:^${v2}$)|(?:^${v3}$)`) :
    new RegExp(`${v2}|${v3}`, 'g');

 onion.v2 = opts => opts && opts.exact ? new RegExp(`^${v2}$`) : new 
 RegExp(`${b}${v2}${b}`, 'g');
 onion.v3 = opts => opts && opts.exact ? new RegExp(`^${v3}$`) : new 
 RegExp(`${b}${v3}${b}`, 'g');

module.exports = onion;

Я хочу преобразовать эти регулярные выражения в те, которые могут использоваться в python, чтобы дополнить существующий код анализа.

Итак, как мне преобразовать регулярное выражение в первом блоке кода в регулярные выражения, которые заменяют регулярное выражение ниже:

import re
import requests




r = requests.get('https://trac.torproject.org/projects/tor/wiki/doc/NextGenOnions#Howtoconnecttothetesthubfornextgenonionservices')  
print(r.text)
stringforanalysis = str(r.text)
#^(?:[a-z2-7]{16}|[a-z2-7]{56})\.onion$

v3s = re.findall(r"^(?:[a-z2-7]{16}|[a-z2-7]{56})\.onion$", stringforanalysis)
v2s = re.findall(r"^(?:[a-z2-7]{16}|[a-z2-7]{56})\.onion", stringforanalysis)
print("v2 and 3")
print(v3s)
print(v2s)

Возможный вывод должен быть список версии 2 и версии 3

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