URL的正则表达式

 

 

string pattern = "(((http[s]{0,1}|ftp)://)?[a-zA-Z0-9\\.\\-]+\\.(com|cn|net|com\\.cn|org|biz|name|info|tv|cc|([a-zA-Z]{2,6}))(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&amp;*+?:_/=<>]*)
?)";

 能够优先匹配有这些com|cn|net|com\\.cn|org|biz|name|info|tv|cc|后缀的,

 

最后再看[a-zA-Z]{2,6}是否匹配得上。

 

使用google的re2正则表达式引擎,找出一个文本中的url串。

 

#include <vector>
#include <string>
#include <iostream>
#include <cassert>

using namespace std;

#include "re2/re2.h"

int main() {
    //string contents = "http://baidu.comseseses";
    string contents = "a沈飞四分trip.taobao.combs:23www.a.c23sfeoa.comhshttp://www.baidu.comefi3xx:68g.com?sfhe*shttps://g.cnfeh=2332a:b3";          // Fill string somehow
    string pattern = "(((http[s]{0,1}|ftp)://)?[a-zA-Z0-9\\.\\-]+\\.(com|cn|net|com\\.cn|org|biz|name|info|tv|cc|([a-zA-Z]{2,6}))(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&amp;*+?:_/=<>]*)
?)";
    re2::StringPiece input(contents);    // Wrap a StringPiece around it
    string var;
    while (RE2::FindAndConsume(&input, pattern, &var)) {
        cout << var << endl;
    }
    return 0;
}

编译方法 g++ test.cpp -lre2 

匹配到的串为:

trip.taobao.com

23www.a.c23sfeoa.com

http://www.baidu.com

68g.com

https://g.cn

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值