首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

一个正则表达式的解析,该如何处理

2014-04-25 
一个正则表达式的解析r(?:https?://(?:[^:/]+)(?::(?:[0-9]+))?/uri/)?这个正则表达式又能能详细解释下

一个正则表达式的解析
r'(?:https?://(?:[^:/]+)(?::(?:[0-9]+))?/uri/)?'这个正则表达式又能能详细解释下么,好多问号和括号啥的看不大懂啊
[解决办法]
耐心一点就不难
从外向内或者从内向外读就简单了

首先要知道(?:)的意义,匹配但不计算为子组
你这里全部都是(?:),所以根本就不存在计算子组的问题,明白了就把它当成()看就行了
剔去小括号旁边的?:,剩下的还难么?
恐怕最难就是有一组是(?::)这样的,照样做就变成冒号开头,是的,这里就是要匹配冒号
就是这个http://127.0.0.1:8000/ 红色的
然后有一个[^:/]就是排除 : 和 /
其他问号因为前面没有 \ ,所以一律表示数量{0,1}或者是否最大匹配(贪婪),这里都是表示数量0或1个,即可有可无

你逐对括号拆就是了

热点排行