网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月28日漏签0天
c++吧 关注:621,684贴子:2,111,724
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 19回复贴,共1页
<<返回c++吧
>0< 加载中...

c++ primer第十七章正则表达式我突然就懵B了语法到底是什么?

  • 只看楼主
  • 收藏

  • 回复
  • 青春如此能扯
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用途我倒是看明白了点。
但是语法懵B,该怎么学呢?


  • 青春如此能扯
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
使用正则表达式可简单的分成几步:
1.编译正则表达式
2.执行匹配
3.释放内存
首先,编译正则表达式
int regcomp(regex_t *preg, const char *regex, int cflags);
reqcomp()函数用于把正则表达式编译成某种格式,可以使后面的匹配更有效。
preg: regex_t结构体用于存放编译后的正则表达式;
regex: 指向正则表达式指针;
cflags:编译模式
共有如下四种编译模式:
REG_EXTENDED:使用功能更强大的扩展正则表达式
REG_ICASE:忽略大小写
REG_NOSUB:不用存储匹配后的结果
REG_NEWLINE:识别换行符,这样‘$’就可以从行尾开始匹配,‘^’就可以从行的开头开始匹配。否则忽略换行符,把整个文本串当做一个字符串处理。
其次,执行匹配
int regexec(const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags);
preg: 已编译的正则表达式指针;
string:目标字符串;
nmatch:pmatch数组的长度;
pmatch:结构体数组,存放匹配文本串的位置信息;
eflags:匹配模式
共两种匹配模式:
REG_NOTBOL:The match-beginning-of-line operator always fails to match (but see the compilation flag REG_NEWLINE above). This flag may be used when different portions of a string are passed to regexec and the beginning of the string should not be interpreted as the beginning of the line.
REG_NOTEOL:The match-end-of-line operator always fails to match (but see the compilation flag REG_NEWLINE above)
最后,释放内存
void regfree(regex_t *preg);
当使用完编译好的正则表达式后,或者需要重新编译其他正则表达式时,一定要使用这个函数清空该变量。
其他,处理错误
size_t regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size);
当执行regcomp 或者regexec 产生错误的时候,就可以调用这个函数而返回一个包含错误信息的字符串。
errcode: 由regcomp 和 regexec 函数返回的错误代号。
preg: 已经用regcomp函数编译好的正则表达式,这个值可以为NULL。
errbuf: 指向用来存放错误信息的字符串的内存空间。
errbuf_size: 指明buffer的长度,如果这个错误信息的长度大于这个值,则regerror 函数会自动截断超出的字符串,但他仍然会返回完整的字符串的长度。所以我们可以用如下的方法先得到错误字符串的长度。
当然我在测试的时候用到的也比较简单,所以就直接用了,速度一会再说!


2025-06-28 20:13:04
广告
  • 青春如此能扯
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
感觉这块像是突然跳出来的。


  • 青春如此能扯
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 青春如此能扯
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 青春如此能扯
  • |
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
ECMAScript我擦类 找到资料了。好多好长啊。。。。


  • silmerusse
  • ^
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这玩意有点难,不过很有用
其实其他语言也都有的
我写Python的时候用了很多正则表达式


  • dogbitcoin
  • ||
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我也闷了


2025-06-28 20:07:04
广告
  • p786317875
  • <
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
正则表达式语法?你想背下来全部?真背的下来就神了


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 19回复贴,共1页
<<返回c++吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示