Regex 在python中验证代理uri的正则表达式
我已尝试使用正则表达式验证以下有效和无效的代理URI。我需要帮助证明python中的有效和无效场景 输入应采用以下方式:Regex 在python中验证代理uri的正则表达式,regex,validation,proxy,Regex,Validation,Proxy,我已尝试使用正则表达式验证以下有效和无效的代理URI。我需要帮助证明python中的有效和无效场景 输入应采用以下方式: 000.0000.00.00 #invalid 912.456.123.123 #invalid 999.999.999.999:99999 #invalid 192.168.1.1
000.0000.00.00 #invalid
912.456.123.123 #invalid
999.999.999.999:99999 #invalid
192.168.1.1 #valid
192.168.1.1.1 #invalid
proxy.company.com:3128 #valid
https://proxy.company.com:3128 #valid
https://proxy.company.com:3128/?action=list #valid
user:pass@proxy.company.com:3128 #valid
localhost:8000 #valid
http://localhost:8000 #valid
3...3 #invalid
我的正则表达式:
(^(\w+)(?::)+((\w+))@)|(^https?:\/\/)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(?:\.[^0-9])|(localhost)(?::(?![7-9]\d\d\d\d)(?!6[6-9]\d\d\d)(?!65[6-9]\d\d)(?!655[4-9]\d)(?!6553[6-9])(?!0+)(?P<Port>\d{1,5}))?(?:\/?|[\/?]\S+)$
我需要全面校对的帮助。要匹配您的示例数据,一种解决方案可以是匹配ip号码,或者匹配类似url的结构,或者使用
@
^(?:(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:https?://)?(?![\d.]+:)\w+(?:\.\w+)*:\d+\S+|\w+:\w+@(?![\d.]+:)\w+(?:\.\w+)*:\d+)$
大部分(您可以相应地进行调整)
字符串的开头^
非捕获组(?:
模式(?:(?:25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9]?)\{3}(?:25[0-5]| 2[0-4][0-9][01]?[0-9][0-9]。
或|
匹配类似url的模式,该模式不能仅由冒号前的数字和点组成(?:https?:/)(?![\d.]+:)\w+(?:\。\w+*:\d+\S+
或|
匹配用户名和密码的模式,后跟一个\w+:\w+@(?![\d.]+:)\w+(?:\。\w+*:\d+
@
关闭非捕获组)
字符串结尾$
注意此模式不保证完全校对,因为您的示例包含多种可能的变体。要匹配示例数据,一种解决方案可以是匹配ip号码,或匹配类似url的结构,或使用
@
^(?:(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:https?://)?(?![\d.]+:)\w+(?:\.\w+)*:\d+\S+|\w+:\w+@(?![\d.]+:)\w+(?:\.\w+)*:\d+)$
大部分(您可以相应地进行调整)
字符串的开头^
非捕获组(?:
模式(?:(?:25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9]?)\{3}(?:25[0-5]| 2[0-4][0-9][01]?[0-9][0-9]。
或|
匹配类似url的模式,该模式不能仅由冒号前的数字和点组成(?:https?:/)(?![\d.]+:)\w+(?:\。\w+*:\d+\S+
或|
匹配用户名和密码的模式,后跟一个\w+:\w+@(?![\d.]+:)\w+(?:\。\w+*:\d+
@
关闭非捕获组)
字符串结尾$
请注意此模式不能保证完全打样,因为您的示例包含多种可能的变体。第四只鸟,感谢您的输入。这对我有用,这很不寻常。这给了我一个有效场景的错误。例如,这些不是解析<代码>10.115.27.54:3128用户:pass@10.115.27.54:3128用户:pass@https://10.115.27.54:3128 proxy.company.com用户:pass@http://10.115.27.54:3128@PranayBankar这是因为这些格式与示例数据中列出的格式不同。@PranayBankar嗯,可能有边缘情况,但是你可以像这样试试,我试过这个<(以下以下::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::[A-一--Z0--10-9-9-9-9-9-9-[0.0,0.0.0,0.61}[0,0.0.0.0,0.0,10万万[0.61}[0,,,[0,[0,[0,[0,[0.0,[0,[0.61}[0,[0,[0.0[0.0.0.0,[0[0[0[0[0.0.0.0-0[0,,[0.0-0[0-9][0-9](?:(?![7-9]\d\d\d\d)(?!6[6-9]\d\d\d)(?!65[6-9]\d\d)(?!655[4-9]\d)(?!6553[6-9])(?!0+(?)(?:\/?|[\/?]\S+$第四只鸟,谢谢你的输入。这对我有用,这很不寻常。这给了我一个有效场景的错误。例如,这些不是解析<代码>10.115.27.54:3128用户:pass@10.115.27.54:3128用户:pass@https://10.115.27.54:3128 proxy.company.com用户:pass@http://10.115.27.54:3128@PranayBankar这是因为这些格式与示例数据中列出的格式不同。@PranayBankar嗯,可能有边缘情况,但是你可以像这样试试,我试过这个<(以下以下::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::[A-一--Z0--10-9-9-9-9-9-9-[0.0,0.0.0,0.61}[0,0.0.0.0,0.0,10万万[0.61}[0,,,[0,[0,[0,[0,[0.0,[0,[0.61}[0,[0,[0.0[0.0.0.0,[0[0[0[0[0.0.0.0-0[0,,[0.0-0[0-9][0-9](?:(?![7-9]\d\d\d\d)(?!6[6-9]\d\d\d)(?!65[6-9]\d\d)(?!655[4-9]\d)(?!6553[6-9])(?!0+(?)(?:\/?[\/?]\S+)$