c - 字符串匹配多少次
问题描述
我在这里有一个像这样的模式,像*b*
这样一个“abcdb”女巫的字符串匹配了两次。
我想计算时间字符串匹配的次数,但我不知道如何用 C 语言实现这一点,因为我只是一个初学者。
是否有任何关于如何在 c 中创建此功能的提示?
解决方案
对于像这样的简单模式*b*
,您可以使用strstr
定义在<string.h>
:
- 初始化一个
const char *p = "abcdb";
- 每场比赛
p = strstr(p, "b");
- 如果匹配可以重叠,则计算匹配并增加
p
一,如果不能重叠,则增加模式的长度。 - 当没有匹配时,你有总计数。
对于更复杂的正则表达式,没有标准函数可以匹配通用模式。您可以尝试安装正则表达式库或编写自己的引擎,这是一项不平凡的任务,至少可以这么说。
这是代码:
#include <string.h>
// works for simplistic patterns without any wildcards
int count_matches(const char *s, const char *pattern) {
char *p;
int count = 0;
for (p = s; (p = strstr(p, pattern)) != NULL; p++)
count++;
return count;
}
如果您的系统支持 Posix 文件名模式匹配,您可以使用fnmatch()
.
推荐阅读
- powershell - 更改列 Powershell 中的所有日期格式
- html - Microsoft Outlook Email border overwriting CSS
- html - 调整垫子凸起按钮的大小
- java - int[] 到 List 的类型映射
- react-native - 如何在渲染时滚动到 TextInput 的顶部
- node.js - 无法将集合用户作为 JSON 对象 (getuser())
- arrays - 通过引用特定对象的一个键来获取数组的对象
- architecture - 使用微服务重置依赖于令牌的 API
- database - 在 Clickhouse Docker 容器中访问用户文件 users.xml?
- javascript - Calculate total price with products, size, and quantity in javascript