Linux下自带的regex

Linux下可直接用regex.h来支持正则表达式。

Android同样也有该头文件,可认为Android也是支持的。

#include <sys/types.h>
#include <regex.h>

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

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

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

void regfree(regex_t *preg);

rm_so为匹配字符串起始偏移(start offset),rm_eo为匹配字符串的终止偏移(end offset)。

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

 1 #include <stdio.h>
 2 #include <regex.h>
 3 #include <string.h>
 4
 5 int main(void)
 6 {
 7     const char *str = "aabbccdd.com";
 8     const char *pattern = "^(.+?)\\.com$";
 9     regex_t reg;
10     regmatch_t match[10];
11
12     int ret = 0;
13     ret = regcomp(&reg, pattern, REG_EXTENDED | REG_NEWLINE);
14     if(ret != 0)
15         printf("error\n");
16     else
17     {
18         ret = regexec(&reg, str, 10, match, 0);
19         if(ret != REG_NOMATCH)
20         {
21             int len = match[1].rm_eo - match[1].rm_so;
22             char buf[1024] = {0};
23             memcpy(buf, str + match[1].rm_so, len);
24             printf("final buf %s\n", buf);
25         }
26     }
27     regfree(&reg);
28     return 0;
29 }

regmatch_t数组用来存储匹配的结果,该参数为数组的原因实际上是为了匹配group,其规则和Java等实现一致,若匹配成功,数组的[0]为整个匹配串,即group(0),其他为各个匹配到的组。

man regex

时间: 2024-11-01 14:32:20

Linux下自带的regex的相关文章

Linux下Tomcat带日志启动命令

在Linux环境下,启动Tomcat时我们需要在启动过程中看到日志信息.可以通过下面命令启动Tocmat. ./startup.sh; tailf ../logs/catalina.out OR ./startup.sh && tail -f ../logs/catalina.out 原文地址:https://www.cnblogs.com/zhangruifeng/p/12403429.html

linux下删除带特殊符号文件的方法

今天发现某个目录下面多了个"-exclude"目录,不知道是怎么产生的,直接rm -rf -exclude删掉,直接报rm:无效选项 - e错误,换成rm -rf \-exclude还是报同样的错误,后来找了点资料,终于干掉了,命令为: rm - -exclude /bin/rm -rf  \'

Linux下python安装升级详细步骤 | Python2 升级 Python3 转载

Linux下python升级步骤  Python2 ->Python3 多数情况下,系统自动的Python版本是2.x 或者yum直接安装的也是2.x 但是,现在多数情况下建议使用3.x 那么如何升级呢? 下面老徐详细讲解升级步骤: 首先下载源tar包 可利用linux自带下载工具wget下载,如下所示: wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz 下载完成后到下载目录下,解压 tar -xzvf Python-3.3

Linux下 PHP 安装pecl_http方法

Linux下自带的PHP不支持HTTP库,需要自己安装 pecl_http组件安装步骤如下: 1. 组件安装 1.1 安装php-devel开发组件          yum install php-devel 1.2 安装php-pecl组件          yum install php-pecl-memcache 1.3 安装pecl_http的扩展包          pecl install pecl_http 命令pecl install pecl_http的安装过程中可能会出现如

在linux下安装图形界面

在安装好linux服务器后,发现没有图形界面,而某个程序的调试或者使用,需要使用图形界面,那怎么办呢? 不要着急,使用linux下自带的yum groupinstall 安装几个包就OK了 yum groupinstall –y "Desktop" yum groupinstall –y "Desktop Platform" yum groupinstall –y "Desktop PlatformDevelopment" yum groupin

linux下利用split分割大文件

使用split分割大文件 在我们的实际生产环境中,会产生许许多多的大文件,这些文件的大小不一,有的甚至会有好几十T的大小,那么我们对这些文件进行分析时,又该如何下手呢?这时我们便可以使用linux下自带的一个命令split来实现文件的分割. Split对文件的分割支持按照行数的分割,以及支持按照大小分割两种模式.要说明的是,在二进制文件中,没有'行'的概念,所以二进制文件无法使用行分割,而只能按照文件的大小来进行分割. 本次实验自行分割出一个500M大小的文件,如下图: 我们来对这个模拟文件进行

Linux下python安装升级详细步骤 | Python2 升级 Python3

Linux下python升级步骤  Python2 ->Python3 多数情况下,系统自动的Python版本是2.x 或者yum直接安装的也是2.x 但是,现在多数情况下建议使用3.x 那么如何升级呢? 下面老徐详细讲解升级步骤: 首先下载源tar包 可利用linux自带下载工具wget下载,如下所示: wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz 下载完成后到下载目录下,解压 tar -xzvf Python-3.3

Linux下python升级步骤

先安装openssl,openssl-devel yum install openssl yum install openssl-devel 1切换到指定的目录下: cd /usr/local 2下载源tar包 可利用linux自带下载工具wget下载,如下所示: 1 # wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz 解压 1 tar -xzvf Python-2.7.9.tgz 在编译前先在/usr/local建一个文

Linux下安装Python3.x.x

linux一般都自带了python,然而2014年以前的linux自带的python都是2.x.x甚至更早的版本. 需要使用python3.x.x需要自行下载安装. 网上有个直接在官网下载python的方法,亲测失败,换了几个版本下载还是失败. 不能实现的代码段:wget http://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.bz2 可行的做法是:可以现在网上找到python3.x.x的linux文件,上传到linux系统后,再安装pyt