GNU Regex Library

windows 下 GNU 正则表达式的安装与使用, 参考 <张公子>

https://www.cnblogs.com/mrneo/p/5856480.html

正则表达式字符串规范-参考

http://blog.csdn.net/csd_c_chen/article/details/78237600

#include <regex.h>

regcomp - 编译正则表达式
regexec   - 匹配正则表达式
regfree    - 释放正则表达式

int regcomp(regex_t *preg, const char *regex, int cflags);

preg  - 输出参数, 保存编译结果

regex - 正则表达式的字符串

cflags - 0

return - success(0)   error(非0)

int regexec(const regex_t *preg, const char *string, size_t nmatch,
  regmatch_t pmatch[], int eflags);

preg - 输出参数, 保存编译结果

regex - 正则表达式的字符串

nmathc - sizeof (match) /sizeof (match[0])

pmatch - regmatch_t match[2] 一般声明一个数组存放匹配信息

cflags - 0

return - success(0)   error(非0)

void regfree(regex_t *preg);

// 获取正则表达式编译错误信息

size_t regerror(int errcode, const regex_t* preg, char* errbuf, size_t errbuf_size);

errcode - 以上函数返回值

errbuf    - 错误信息保存缓冲区

errbuf_size - 缓冲区大小

typedef struct {
    regoff_t rm_so;
    regoff_t rm_eo;
} regmatch_t;

regexec 匹配后pmatch数组的成员变量

<......href="   ..............   ".......>
                     |          |
                     1         1
                     rm_so  rm_eo

        |<-----len------->|
        0                          0
        rm_so                   rm_eo

        |
        html

// regex : href="\s*\([^ >"]*\)\s*"
// html  : ...href="  /software/download.html  "...
//               |           |<-----match[1]--------->|  |
//               |       rm_so                         rm_eo   |
//               |<-------------match[0]----------->|
//            rm_so                                            rm_eo

\s         -  匹配任意空白字符(空格,制表,换行等)
 *         - 重复前一个匹配项任意次
\(         - 子表达式左边界
\)         - 子表达式右边界
[^ >]   - 任意除空格和大于号之外的字符


\w       - 单词字符 [a-zA-Z_0-9]

\W      - 非单词字符

\S        - 非空白字符

\d        - [0-9]

\D        - [^0-9]


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值