日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实现正则表达式的*和?匹配

發布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现正则表达式的*和?匹配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前幾天在用grep的時候,發現grep的*居然支持得有問題,并不能得到期望的結果,于是花了點時間,來實現正則表達式的×匹配,下面的這個函數可以匹配*,?。

代碼很簡短,但是很有效率。

bool match_star(const char* text,const char* pattern) {const char *cp = text;const char* pp = pattern;const char *ps1, *ps2;if ( !*pattern )return true;while (*cp){ps1 = cp;ps2 = pp;while ( *ps1 && *ps2){if(*ps2 == '*'){cp = ps1 - 1;pp = ps2+1;break;}else if(0 == (*ps1-*ps2) || *ps2 == '?'){ps1++;ps2++;}else{break;}}if (!*ps2){return true;}cp++;}return false; }


在Windows VC2010和Linux G++上測試通過。

在實現匹配×的時候,使用了一個技巧,即相當于重新對兩個新的字符串進行比較,拋棄了已經比較過的內容。

比如字符串是1234567890,模式串是1*23*0以及1?3等都可以匹配成功。

如有問題,懇請指正,多謝!



總結

以上是生活随笔為你收集整理的实现正则表达式的*和?匹配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。