| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 641 人关注过本帖, 1 人收藏
标题:C语言的方式 带控制字符串的正则表达式怎么写
只看楼主 加入收藏
tankchen
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2022-11-5
收藏(1)
 问题点数:0 回复次数:3 
C语言的方式 带控制字符串的正则表达式怎么写
带控制字符串的正则表达式 在C#和java方式会弄,C的方式 怎么弄 都没弄成功 求教C大神
搜索更多相关主题的帖子: 字符串 控制 C语言 正则表达式 成功 
2022-11-05 22:11
Bccn1993
Rank: 1
等 级:新手上路
威 望:1
帖 子:4
专家分:0
注 册:2023-4-21
收藏
得分:0 
C语言中使用正则表达式一般分为三部:

1.编译正则表达式regcomp()

2.匹配正则表达式 regexec()

3.释放正则表达式 regfree()

可以参考POSIX 规定
2023-04-21 10:27
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
C++ 的模板库有 std::regex_???,但 C 的标准库没有 regex_???
所以,你问「C的方式 怎么弄 都没弄成功」时,别人能知道你用的是谁写的什么库吗?
2023-04-21 14:51
东海ECS
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:Python
等 级:版主
威 望:32
帖 子:412
专家分:1646
注 册:2023-1-24
收藏
得分:0 
C语言标准库中没有提供正则表达式的处理函数,需要使用第三方库或自己实现正则表达式引擎。以下是一些常见的第三方库:

PCRE(Perl Compatible Regular Expressions):是最受欢迎的正则表达式库之一,支持众多正则表达式语法。(https://www.)

POSIX正则表达式库:是UNIX和Linux系统中使用的标准库,标准定义了它的一些语法。(http://pubs.)

TRE:是一个高效的POSIX兼容正则表达式库。(https://)

下面是一个使用PCRE库的示例代码,可以实现带控制字符串的正则表达式匹配:

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pcre.h>

void match(const char *pattern, const char *string) {
    const char *error;
    int errorOffset;
    pcre *compiledPattern;
    int result;

    // Compile the pattern
    compiledPattern = pcre_compile(pattern, 0, &error, &errorOffset, NULL);
    if (!compiledPattern) {
        printf("Error compiling pattern: %s\n", error);
        return;
    }

    // Match the string
    result = pcre_exec(compiledPattern, NULL, string, strlen(string), 0, 0, NULL, 0);
    if (result < 0) {
        switch (result) {
            case PCRE_ERROR_NOMATCH:
                printf("No match.\n");
                break;
            default:
                printf("Error matching pattern.\n");
                break;
        }
    } else {
        printf("Matched: %s\n", string);
    }

    // Free the compiled pattern
    pcre_free(compiledPattern);
}

int main() {
    const char *pattern = "^[0-9]*@.*$"; // 控制字符串为数字 + @,后面跟任何字符
    const char *string1 = "123@abc"; // 匹配成功
    const char *string2 = "abc@123"; // 匹配失败

    match(pattern, string1);
    match(pattern, string2);

    return 0;
}

要使用PCRE库,需要先下载并安装库,然后将其头文件和库文件路径添加到编译器的搜索路径中。上述代码中的正则表达式匹配了以数字开头,后面跟@,再后面跟任何字符的字符串,这个正则表达式可以用来匹配带控制字符串的输入。




会当凌绝顶,一览众山小.
2023-04-21 19:02
快速回复:C语言的方式 带控制字符串的正则表达式怎么写
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016247 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved