Следующий код 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