一个正则表达式的解析
r'(?:https?://(?:[^:/]+)(?::(?:[0-9]+))?/uri/)?'这个正则表达式又能能详细解释下么,好多问号和括号啥的看不大懂啊
[解决办法]
耐心一点就不难
从外向内或者从内向外读就简单了
首先要知道(?:)的意义,匹配但不计算为子组
你这里全部都是(?:),所以根本就不存在计算子组的问题,明白了就把它当成()看就行了
剔去小括号旁边的?:,剩下的还难么?
恐怕最难就是有一组是(?::)这样的,照样做就变成冒号开头,是的,这里就是要匹配冒号
就是这个http://127.0.0.1:8000/ 红色的
然后有一个[^:/]就是排除 : 和 /
其他问号因为前面没有 \ ,所以一律表示数量{0,1}或者是否最大匹配(贪婪),这里都是表示数量0或1个,即可有可无
你逐对括号拆就是了