如何将正则表达式模式从Javascript转换为Python?

2024-04-24 11:36:21 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的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的列表


Tags: 代码httpsimportrenewv3exactv2