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("456581464@qq.com");
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的很相似
在文章的最后在配上一些c语言中关于字符查找与匹配的函数
查找一个字符:strchr和strrchr
不同:两者主要的区别就在于:
strchr查找的是字符第一次出现的位置
strrchr查找的是字符最后一次出现的位置
相同:两者相同点就是:它们的返回值都是指向该位置的指针,都在c的string.h中,注意和c++的string做区分哦
 const char *s="a";
    const char * ptr="abca";
    if(strchr(ptr,s))
    {
      cout<<"exist"<<endl;
    }
查找一个字符串:strstr strrstr
不同:两者主要的区别就在于:
strstr查找的是字符串第一次出现的位置
strrstr查找的是字符串最后一次出现的位置
相同:两者相同点就是:它们的返回值都是指向该位置的指针,都在c的string.h中,注意和c++的string做区分哦
const char *s="abc";
    const char * ptr="abca";
    if(strstr(ptr,s))
    {
      cout<<"exist"<<endl;
    }
Java的一些写法:
Java:
1、int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引。
2、int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。
3、int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引。
4、int lastIndexOf(String str, int startIndex) :从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索

 

 

posted @ 2019-10-07 19:12  pycodego  阅读(365)  评论(0编辑  收藏  举报