MtFmt 1.0.0
MtFmt is a format library on embed. system and wrote by pure C.
载入中...
搜索中...
未找到
宏定义 | 函数
mm_pattern.c 文件参考

模式串匹配和替换 更多...

#include "mm_heap.h"
#include "mm_string.h"
#include <stddef.h>
#include <string.h>

宏定义

#define MSTR_IMP_SOURCES   1
 
#define BM_THRESHOLD_CNT   6
 指定使用BM算法的阈值
 
#define BM_CHAR_INDEX_MAX   256
 单个char的最大值(unsigned)
 

函数

static mstr_result_t mstr_find_simple (isize_t *result, const char *main_str, usize_t main_str_cnt, usize_t begin_pos, const char *pattern, usize_t pattern_cnt)
 字符串查找(仅返回字符的count)
 
static mstr_result_t patt_match_impl (isize_t *res, const mstr_char_t *mstr, usize_t mstr_cnt, const mstr_char_t *patt, usize_t patt_cnt)
 子串匹配
 
static mstr_result_t mstr_retain_start_with_impl (MString *str, const char *patt, usize_t patt_cnt)
 mstr_retain (start_with) 的实现
 
static mstr_result_t mstr_retain_end_with_impl (MString *str, const char *patt, usize_t patt_cnt)
 mstr_retain (end_with) 的实现
 
static mstr_result_t mstr_retain_all_impl (MString *str, const char *patt, usize_t patt_cnt)
 mstr_retain (all) 的实现
 
static mstr_result_t mstr_retain_all_impl_helper (MString *out_str, const MString *src_str, const char *patt, usize_t patt_cnt, usize_t patt_len)
 mstr_retain (all) 的实现 (helper)
 
static void make_jump_table (uint8_t *table, const mstr_char_t *patt, usize_t patt_cnt)
 按照模式串 patt 构造跳转表
 
static mstr_result_t unicode_length_of (usize_t *len, const char *str, usize_t cnt)
 计算unicode字符串的字符长度
 
 mstr_find (const MString *str, MStringMatchResult *f_res, usize_t begin_pos, const char *pattern, usize_t pattern_cnt)
 查找子串第一次出现的位置
 
 mstr_replace (MString *str, MStringReplaceOption opt, const char *pattern, usize_t pattern_cnt, const char *replace_to, usize_t replace_to_cnt)
 进行字符串替换(单个目标)
 
 mstr_retain (MString *str, MStringReplaceOption opt, const char *patt, usize_t patt_cnt)
 从字符串中移除所有匹配substr的字符
 

详细描述

模式串匹配和替换

作者
向阳 (hinat.nosp@m.a.ho.nosp@m.shino.nosp@m.@fox.nosp@m.mail..nosp@m.com)
版本
1.0
日期
2023-07-23

宏定义说明

◆ BM_CHAR_INDEX_MAX

#define BM_CHAR_INDEX_MAX   256

单个char的最大值(unsigned)

◆ BM_THRESHOLD_CNT

#define BM_THRESHOLD_CNT   6

指定使用BM算法的阈值

◆ MSTR_IMP_SOURCES

#define MSTR_IMP_SOURCES   1

函数说明

◆ make_jump_table()

static void make_jump_table ( uint8_t *  table,
const mstr_char_t patt,
usize_t  patt_cnt 
)
static

按照模式串 patt 构造跳转表

参数
[out]table跳转表
[in]patt模式串
[in]patt_cnt模式串的字符数

◆ mstr_find()

mstr_find ( const MString str,
MStringMatchResult f_res,
usize_t  begin_pos,
const char *  pattern,
usize_t  pattern_cnt 
)

查找子串第一次出现的位置

参数
[in]str字符串a
[out]f_res查找结果
[in]begin_pos开始查找的位置
[in]pattern需要查找的子串
[in]pattern_cntpattern的char个数

◆ mstr_find_simple()

static mstr_result_t mstr_find_simple ( isize_t result,
const char *  main_str,
usize_t  main_str_cnt,
usize_t  begin_pos,
const char *  pattern,
usize_t  pattern_cnt 
)
static

字符串查找(仅返回字符的count)

参数
[out]result结果, -1表示没有找到
[in]main_str主串
[in]main_str_cnt主串的字符计数
[in]begin_pos开始查找的位置的字符计数偏移量
[in]pattern模式串
[in]pattern_cnt模式串的长度计数

◆ mstr_replace()

mstr_replace ( MString str,
MStringReplaceOption  opt,
const char *  pattern,
usize_t  pattern_cnt,
const char *  replace_to,
usize_t  replace_to_cnt 
)

进行字符串替换(单个目标)

参数
[in,out]str字符串
[in]opt替换模式
[in]pattern需要替换的子串模式
[in]pattern_cnt模式串的字符计数
[in]replace_to需要替换为的结果
[in]replace_to_cnt_cnt结果的字符计数

◆ mstr_retain()

mstr_retain ( MString str,
MStringReplaceOption  opt,
const char *  pattern,
usize_t  pattern_cnt 
)

从字符串中移除所有匹配substr的字符

参数
[in,out]str字符串
[in]opt替换模式
[in]pattern需要移除的pattern
[in]pattern_cnt需要移除的pattern的字符计数

◆ mstr_retain_all_impl()

static mstr_result_t mstr_retain_all_impl ( MString str,
const char *  patt,
usize_t  patt_cnt 
)
static

mstr_retain (all) 的实现

参数
[in,out]str需要进行剔除的字符串
[in]patt模式串
[in]patt_cnt模式串的字符计数

◆ mstr_retain_all_impl_helper()

static mstr_result_t mstr_retain_all_impl_helper ( MString out_str,
const MString src_str,
const char *  patt,
usize_t  patt_cnt,
usize_t  patt_len 
)
static

mstr_retain (all) 的实现 (helper)

参数
[in]out_str剔除结果, 外部已经init, 并保留了足够的内存区
[in]src_str需要进行剔除的字符串
[in]patt模式串
[in]patt_cnt模式串的字符计数
[in]patt_len模式串的长度

◆ mstr_retain_end_with_impl()

static mstr_result_t mstr_retain_end_with_impl ( MString str,
const char *  patt,
usize_t  patt_cnt 
)
static

mstr_retain (end_with) 的实现

参数
[in,out]str需要进行剔除的字符串
[in]patt模式串
[in]patt_cnt模式串的字符计数

◆ mstr_retain_start_with_impl()

static mstr_result_t mstr_retain_start_with_impl ( MString str,
const char *  patt,
usize_t  patt_cnt 
)
static

mstr_retain (start_with) 的实现

参数
[in,out]str需要进行剔除的字符串
[in]patt模式串
[in]patt_cnt模式串的字符计数

◆ patt_match_impl()

static mstr_result_t patt_match_impl ( isize_t res,
const mstr_char_t mstr,
usize_t  mstr_cnt,
const mstr_char_t patt,
usize_t  patt_cnt 
)
static

子串匹配

参数
[out]res匹配结果
[in]mstr主串
[in]mstr_cnt主串长度
[in]patt模式串
[in]patt_len模式串长度

◆ unicode_length_of()

static mstr_result_t unicode_length_of ( usize_t len,
const char *  str,
usize_t  cnt 
)
static

计算unicode字符串的字符长度