java与c++的正则表达式的小总结

Java的正则表达式的书写方式:
private String reg="\\d+@\\w*\\.\\w{3}";//正则表达式
    //"\\d"表示0-9的一个数字"+"表示前缀\\d有1个或者多个
    //"\\."表示正则表达式中的."\\w"表示a-zA-Z0-9字符或者数字
    //"{3}"表示有三个前缀,相当于"+"的一种变式
    //而{n,}表示有n个前缀及以上
    //{n,m}表示有n-m个前缀(含边界)
    //例子:space.matches("[email protected]");
C++的正则表达式的书写方式:
由于c++/c标准中都不支持直接使用正则表达式,但是可以通过一些函数间接的调用正则表达式
下面就来介绍两种可以支持正则表达式的函数,sscanf与ssprintf
函数原型:sscanf(char *src,char *fromate);与ssprintf(char*src,char*fromate);
两者的参数样式大致相同
sscanf与scanf的主要区别就在于:scanf是从键盘中获取资源,而sscanf是从src这个原字符串中获取资源
sprintf与printf的主要区别在于:printf是将资源打印到屏幕上而sprintf则是将资源放入到src这个参数中
如sprintf(src,"%d.%d.%d",2019,11,6);cout<<src;------2019.11.6
又如sscanf("2019.11.6","%d.%d.%d",&year,&month,&day);就是他们的只要的用法-----接下来就来介绍关键的正则的用法
如其他的用法,比如对某个网址的进行分割sscanf("www.baidu.com/cccss.html","%[^/]%s",host,others);
char host[1024];
    int data=0;
    int val=0;
    cout<<scanf("%d:%d",&data,&val)<<endl;  //默认用空格对数据的输入进行划分
    //也可至指定数据时输入的格式如:%d:%d
    cout<<sscanf_s("www.baidu.com//html.com","%[^/]",host)<<endl;
    cout<<host<<endl;
在某些方面确实和Java的很相似

猜你喜欢

转载自www.cnblogs.com/z2529827226/p/11870213.html