开源项目之TOK REEC (C语言正则表达式)

REEC是一个精简,高效的C语言正则表达式引擎,它使得C语言开发中支持正则表达式,目前已经进化到了1.2.0版本,可以说无论从功能上,还是效率都到达了很好的应用水平,该引擎除支持常用的正则标准之外,还有一些原创的特性,例如正则式的分组、模式敏感等级等等,使得正则表达式更加灵活多变。

项目如图:


效果如图:



主要测试源码如下:

int main(int argc , char** argv) {
	//正则式:<(a-z)^3>、<(a-z)^*>、<(a-z){2,3}>、<(a-z){2,*}>
	//<(a-z)^3>
	//匹配3个字母,出现位置不必连续
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z)^3>","你好a我们是b突壳c开源,欢迎使用1.0我们的产品。",RS_LEVEL_0));
	//结果 abc

	//匹配3个字母,出现位置必须连续
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z)^3>","你好a我们是b突壳c开源,欢迎使用1.0我们的产品。",RS_LEVEL_1));
	//不连续,结果 null

	//<(a-z)^*>
	//匹配所有字母,出现位置不必连续
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z)^*>","你好a我们是b突壳c开源,欢迎使用1.0我们的产品。",RS_LEVEL_0));
	//结果 abc

	//匹配n个字母,出现位置必须连续
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z)^*>","你好a我们是b突壳c开源,欢迎使用1.0我们的产品。",RS_LEVEL_1));
	//结果 a

	//<(a-z){2,3}>
	//匹配至少2个字母,至多3个字母,出现位置不必连续
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z){2,3}>","你好a我们是b突壳c开源,欢e迎d使f用1.0我们的f产品。",RS_LEVEL_0));
	//结果 abc

	//匹配至少2个字母,至多3个字母,出现位置不必连续
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z){2,3}>","你好a我们是突壳开源,欢迎使用1.0我们的产品。",RS_LEVEL_0));
	//不足2个字母,结果 null

	//匹配至少2个字母,至多3个字母,出现位置不必连续
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z){2,3}>","你好a我们是b突壳c开源,欢迎使用1.0我们的产品。",RS_LEVEL_1));
	//不连续,结果 null

	//<(a-z){2,*}>
	//匹配至少2个小写字母,至多n个小写字母,出现位置不必连续
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z){2,*}>","你好a我们是b突A壳c开源,欢F迎G使G用1.0我d们e的f产品。",RS_LEVEL_0));
	//结果 abcdef

	//匹配至少2个小写字母,至多n个小写字母,出现位置不必连续
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z){2,*}>","你好A我们是B突A壳C开源,欢F迎G使G用1.0我D们E的F产品。",RS_LEVEL_0));
	//结果 null

	//匹配至少2个字母,至多n个字母,出现位置必须连续
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z){2,*}>","你好a我们是b突A壳c开源,欢F迎G使G用1.0我d们e的f产品。",RS_LEVEL_1));
	//结果 null

	//1连续,0不连续
	//以下是匹配大写字母,正则式:<(A-Z)^3>、<(A-Z)^*>、<(A-Z){2,3}>、<(A-Z){2,*}>
	//<(A-Z)^3>
	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z)^3>","你好a我们是b突A壳c开源,欢B迎C使用1.0我d们e的f产品。",RS_LEVEL_0));
	//结果 ABC

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z)^3>","你好a我们是b突A壳c开源,欢B迎C使用1.0我d们e的f产品。",RS_LEVEL_1));
	//结果 null

	//<(A-Z)^*>
	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z)^*>","你好a我们是b突A壳c开源,欢B迎C使用1.0我d们e的f产品。",RS_LEVEL_0));
	//结果 ABC

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z)^*>","你好a我们是b突A壳c开源,欢B迎C使用1.0我d们e的f产品。",RS_LEVEL_1));
	//结果 A

	//<(A-Z){2,3}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z){2,3}>","你好a我们是b突A壳c开源,欢B迎C使D用1.0我d们e的f产品。",RS_LEVEL_0));
	//结果 ABC

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z){2,3}>","你好a我们是b突A壳c开源,欢迎使用1.0我d们e的f产品。",RS_LEVEL_0));
	//结果 null

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z){2,3}>","你好a我们是b突A壳c开源,欢B迎C使用1.0我d们e的f产品。",RS_LEVEL_1));
	//结果 null

	//<(A-Z){2,*}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z){2,*}>","你好a我们是b突A壳c开源,欢B迎C使用1.0我d们e的f产D品。",RS_LEVEL_0));
	//结果 ABCD

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z){2,*}>","你好a我们是b突A壳c开源,欢迎使用1.0我d们e的f产品。",RS_LEVEL_0));
	//结果 null

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z){2,*}>","你好a我们是b突A壳c开源,欢B迎C使用1.0我d们e的f产品。",RS_LEVEL_1));
	//结果 null

	//以下是匹配大小写字母,正则式:<(a-zA-Z)^3>、<(a-zA-Z)^*>、<(a-zA-Z){2,3}>、<(a-zA-Z){2,*}>
	//<(a-zA-Z)^3>
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z)^3>","你好a我们是突A壳c开源,欢B迎C使用1.0我d们e的f产品。",RS_LEVEL_0));
	//结果 aAc

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z)^3>","你好a我们是突A壳c开源,欢B迎C使用1.0我d们e的f产品。",RS_LEVEL_1));
	//结果 null

	//<(a-zA-Z)^*>
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z)^*>","你好a我们是突A壳c开源,欢B迎C使用1.0我d们e的f产品。",RS_LEVEL_0));
	//结果 aAcBCdef

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z)^*>","你好a我们是突A壳c开源,欢B迎C使用1.0我d们e的f产品。",RS_LEVEL_1));
	//结果 a

	//<(a-zA-Z){2,3}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z){2,3}>","你好a我们是突A壳c开源,欢B迎C使用1.0我d们e的f产品。",RS_LEVEL_0));
	//结果 aAc

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z){2,3}>","你好a我们是突壳开源,欢迎使用1.0我们的产品。",RS_LEVEL_0));
	//结果 null

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z){2,3}>","你好a我们是突A壳c开源,欢B迎C使用1.0我d们e的f产品。",RS_LEVEL_1));
	//结果 null

	//<(a-zA-Z){2,*}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z){2,*}>","你好a我们是突A壳c开源,欢B迎C使用1.0我d们e的f产品。",RS_LEVEL_0));
	//结果 aAcBCdef

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z){2,*}>","你好a我们是突壳开源,欢迎使用1.0我们的产品。",RS_LEVEL_0));
	//结果 null

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z){2,*}>","你好a我们是突A壳c开源,欢B迎C使用1.0我d们e的f产品。",RS_LEVEL_1));
	//结果 null

	//以下是匹配数字,正则式:<(0-9)^3>、<(0-9)^*>、<(0-9){2,3}>、<(0-9){2,*}>
	//<(0-9)^3>
	printf("%s\n",TOKRegularExpressionEngineRun("<(0-9)^3>","你好我们1是2突壳3开源,欢迎使用1.0我们的产品。",RS_LEVEL_0));
	//结果 123

	printf("%s\n",TOKRegularExpressionEngineRun("<(0-9)^3>","你好我们1是2突壳3开源,欢迎使用1.0我们的产品。",RS_LEVEL_1));
	//结果 null

	//<(0-9)^*>
	printf("%s\n",TOKRegularExpressionEngineRun("<(0-9)^*>","你好我们1是2突壳3开源,欢迎使用1.0我们的产品。",RS_LEVEL_0));
	//结果 12310

	printf("%s\n",TOKRegularExpressionEngineRun("<(0-9)^*>","你好我们1是2突壳3开源,欢迎使用1.0我们的产品。",RS_LEVEL_1));
	//结果 1

	//<(0-9){2,3}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(0-9){2,3}>","你好我们1是2突壳3开源,欢迎使用1.0我们的产品。",RS_LEVEL_0));
	//结果 123

	printf("%s\n",TOKRegularExpressionEngineRun("<(0-9){2,3}>","你好我们1是突壳开源,欢迎使用我们的产品。",RS_LEVEL_0));
	//结果 null

	printf("%s\n",TOKRegularExpressionEngineRun("<(0-9){2,3}>","你好我们12是2突壳3开源,欢迎使用1.0我们的产品。",RS_LEVEL_1));
	//结果 12

	printf("%s\n",TOKRegularExpressionEngineRun("<(0-9){2,3}>","你好我们1是突壳开源,欢迎使用我们的产品。",RS_LEVEL_1));
	//结果 null

	//<(0-9){2,*}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(0-9){2,*}>","你好我们1是2突壳3开源,欢迎使用1.0我们1的2产3品。",RS_LEVEL_0));
	//结果 12310123

	printf("%s\n",TOKRegularExpressionEngineRun("<(0-9){2,*}>","你好我们1是突壳开源,欢迎使用我们的产品。",RS_LEVEL_1));
	//结果 null

	printf("%s\n",TOKRegularExpressionEngineRun("<(0-9){2,3}>","你好我们12345是突壳开源,欢迎使用1.0我们1的2产3品。",RS_LEVEL_1));
	//结果 123

	printf("%s\n",TOKRegularExpressionEngineRun("<(0-9){2,3}>","你好我们1是突壳开源,欢迎使用1.0我们1的2产3品。",RS_LEVEL_1));
	//结果 null

	//以下是匹配数字以及小写字母,正则式:<(a-z0-9)^3>、<(a-z0-9)^*>、<(a-z0-9){2,3}>、<(a-z0-9){2,*}>
	//<(a-z0-9)^3>
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z0-9)^3>","你好我们12a3是突壳开源,欢迎使用1.0我们1的2产3品。",RS_LEVEL_0));
	//结果 12a

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z0-9)^3>","你好我们12是a突壳开源,欢迎使用1.0我们1的2产3品。",RS_LEVEL_1));
	//结果 null

	//<(a-z0-9)^*>
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z0-9)^*>","你好我们12a3是突a壳开d源,欢迎b使f用1.0我c们1的2产3品。",RS_LEVEL_0));
	//结果 12a3adbf10c123

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z0-9)^*>","你好我们a3是突a壳开d源,欢迎b使f用1.0我c们1的2产3品。",RS_LEVEL_1));
	//结果 a3

	//<(a-z0-9){2,3}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z0-9){2,3}>","你好我们1a是突a壳开d源,欢迎b使f用1.0我c们1的2产3品。",RS_LEVEL_0));
	//结果 1aa

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z0-9){2,3}>","你好我们1是突壳开源,欢迎使用我们的产品。",RS_LEVEL_0));
	//结果 null

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z0-9){2,3}>","你好我们1a是突a壳开d源,欢迎b使f用1.0我c们1的2产3品。",RS_LEVEL_1));
	//结果 1a

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z0-9){2,3}>","你好我们1是a突a壳开d源,欢迎b使f用1.0我c们1的2产3品。",RS_LEVEL_1));
	//结果 null

	//<(a-z0-9){2,*}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z0-9){2,*}>","你好我们12a3是突a壳开d源,欢迎b使f用1.0我c们1的2产3品。",RS_LEVEL_0));
	//结果 12a3adbf10c123

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z0-9){2,*}>","你好我们12A3是突B壳开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_0));
	//结果 12310123

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z0-9){2,*}>","你好我们1a3是突B壳开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 1a3

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z0-9){2,3}>","你好我们12a3是突B壳开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 12a

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-z0-9){2,3}>","你好我们1是a突B壳开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 null

	//以下是匹配数字以及大写字母,正则式:<(A-Z0-9)^3>、<(A-Z0-9)^*>、<(A-Z0-9){2,3}>、<(A-Z0-9){2,*}>
	//<(A-Z0-9)^3>
	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z0-9)^3>","你好我们12A3是突B壳开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_0));
	//结果 12A

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z0-9)^3>","你好我们1A是突B壳开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 null

	//<(A-Z0-9)^*>
	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z0-9)^*>","你好我们1a2A3是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_0));
	//结果 12A3BCDE10F123

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z0-9)^*>","你好我们1a2A3是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 1

	//<(A-Z0-9){2,3}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z0-9){2,3}>","你好我们1a2A3是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_0));
	//结果 12A

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z0-9){2,3}>","你好我们1a23是e突壳f开源,欢迎使用1.0我F们1的2产3品。",RS_LEVEL_0));
	//结果 123

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z0-9){2,3}>","你好我们1A23是e突壳f开源,欢迎使用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 1A2

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z0-9){2,3}>","你好我们1a23是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 23

	//<(A-Z0-9){2,*}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z0-9){2,*}>","你好我们1a2A3是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_0));
	//结果 12A3BCDE10F123

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z0-9){2,*}>","你好我们1a23是e突壳f开源,欢迎使用1.0我F们1的2产3品。",RS_LEVEL_0));
	//结果 12310F123

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z0-9){2,*}>","你好我们1aA3是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 A3

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z0-9){2,3}>","你好我们1aA123是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 A12

	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z0-9){2,3}>","你好我们1a23是e突壳f开源,欢迎使用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 23

	//以下是匹配数字以及大小写字母,正则式:<(a-zA-Z0-9)^3>、<(a-zA-Z0-9)^*>、<(a-zA-Z0-9){2,3}>、<(a-zA-Z0-9){2,*}>
	//<(a-zA-Z0-9)^3>
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z0-9)^3>","你好我们1aA3是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_0));
	//结果 1aA

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z0-9)^3>","你好我们1a是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 null

	//<(a-zA-Z0-9)^*>
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z0-9)^*>","你好我们1a2A3是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_0));
	//结果 1a2A3eBfCDE10F123

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z0-9)^*>","你好我们1a2A3是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 1a2A3

	//<(a-zA-Z0-9){2,3}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z0-9){2,3}>","你好我们1a2A3是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_0));
	//结果 1a2

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z0-9){2,3}>","你好我们是突壳开源,欢迎使用我们的产3品。",RS_LEVEL_0));
	//结果 null

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z0-9){2,3}>","你好我们1a2A3是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 1a2

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z0-9){2,3}>","你好我们1是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 null

	//<(a-zA-Z0-9){2,*}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z0-9){2,*}>","你好我们1a2A3是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_0));
	//结果 1a2A3eBfCDE10F123

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z0-9){2,*}>","你好我们是突壳开源,欢迎使用我们的产3品。",RS_LEVEL_0));
	//结果 null

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z0-9){2,*}>","你好我们1a2A3是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 1a2A3

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z0-9){2,3}>","你好我们1a2A3是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 1a2

	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z0-9){2,3}>","你好我们1是e突B壳f开C源,欢迎D使E用1.0我F们1的2产3品。",RS_LEVEL_1));
	//结果 null

	//以下是匹配数字以及大小写字母,正则式:<(symbol)^3>、<(symbol)^*>、<(symbol){2,3}>、<(symbol){2,*}>
	//<(突壳开源)^3>
	printf("%s\n",TOKRegularExpressionEngineRun("<(突壳开源)^3>","突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。",RS_LEVEL_0));
	//结果 突壳开源突壳开源突壳开源

	printf("%s\n",TOKRegularExpressionEngineRun("<(突壳开源)^3>","突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。",RS_LEVEL_1));
	//结果 null

	//<(突壳开源)^*>
	printf("%s\n",TOKRegularExpressionEngineRun("<(突壳开源)^*>","突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。",RS_LEVEL_0));
	//结果 突壳开源突壳开源突壳开源突壳开源突壳开源

	printf("%s\n",TOKRegularExpressionEngineRun("<(突壳开源)^*>","突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。",RS_LEVEL_1));
	//结果 突壳开源

	//<(突壳开源){2,3}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(突壳开源){2,3}>","突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。",RS_LEVEL_0));
	//结果 突壳开源突壳开源突壳开源

	printf("%s\n",TOKRegularExpressionEngineRun("<(突壳开源){2,3}>","突a壳开源,欢迎使用突壳d开源产品,欢迎来到突d壳开源,突壳d开源致力于基础软件开发与研究,突壳d开源。",RS_LEVEL_0));
	//结果 null

	printf("%s\n",TOKRegularExpressionEngineRun("<(突壳开源){2,3}>","突壳开源突壳开源突壳开源突壳开源,欢迎使用,欢迎来到,突壳开源致力于基础软件开发与研究。",RS_LEVEL_1));
	//结果 突壳开源突壳开源突壳开源

	printf("%s\n",TOKRegularExpressionEngineRun("<(突壳开源){2,3}>","突壳开源突壳开源突壳开源突壳开源,欢迎使用,欢迎来到,突壳开源致力于基础软件开发与研究。",RS_LEVEL_1));
	//结果 突壳开源突壳开源突壳开源

	//<(突壳开源){2,*}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(突壳开源){2,*}>","突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。",RS_LEVEL_0));
	//结果 突壳开源突壳开源突壳开源突壳开源突壳开源

	printf("%s\n",TOKRegularExpressionEngineRun("<(突壳开源){2,*}>","突a壳开源,欢迎使用突壳d开源产品,欢迎来到突d壳开源,突壳d开源致力于基础软件开发与研究,突壳d开源。",RS_LEVEL_0));
	//结果 null

	printf("%s\n",TOKRegularExpressionEngineRun("<(突壳开源){2,*}>","欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究。",RS_LEVEL_1));
	//结果 null

	printf("%s\n",TOKRegularExpressionEngineRun("<(突壳开源){2,3}>","突壳开源突壳开源突壳开源突壳开源,欢迎使用,欢迎来到,突壳开源致力于基础软件开发与研究。",RS_LEVEL_1));
	//结果 突壳开源突壳开源突壳开源

	printf("%s\n",TOKRegularExpressionEngineRun("<(突壳开源){2,3}>","突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。",RS_LEVEL_1));
	//结果 null

	//以下是匹配任意字符,正则式:<(*)^4>、<(*)^*>、<(*){2,4}>、<(*){2,*}>
	//<(*)^4>
	printf("%s\n",TOKRegularExpressionEngineRun("<(*)^4>","突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。",RS_LEVEL_0));
	//结果 突壳

	printf("%s\n",TOKRegularExpressionEngineRun("<(*)^4>","突",RS_LEVEL_1));
	//结果 null

	//<(*)^*>
	printf("%s\n",TOKRegularExpressionEngineRun("<(*)^*>","突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。",RS_LEVEL_0));
	//结果 突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。

	printf("%s\n",TOKRegularExpressionEngineRun("<(*)^*>","突壳开源",RS_LEVEL_1));
	//结果 突壳开源

	//<(*){2,4}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(*){2,4}>","突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。",RS_LEVEL_0));
	//结果 突壳

	printf("%s\n",TOKRegularExpressionEngineRun("<(*){4,6}>","突",RS_LEVEL_0));
	//结果 null

	//<(*){2,*}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(*){2,*}>","突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。",RS_LEVEL_0));
	//结果 突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。

	printf("%s\n",TOKRegularExpressionEngineRun("<(*){4,*}>","突",RS_LEVEL_0));
	//结果 null

	//<(*){2,*}>
	printf("%s\n",TOKRegularExpressionEngineRun("<(*){2,*}>","突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。",RS_LEVEL_0));
	//结果 突壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究,突壳开源。

	printf("%s\n",TOKRegularExpressionEngineRun("<(*){4,*}>","突",RS_LEVEL_0));
	//结果 null

	//综合测试:
	//<(A-Z)^2><(a-z)^3>
	printf("%s\n",TOKRegularExpressionEngineRun("<(A-Z)^2><(a-z)^3>","突TOKSmart Compiler壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究。",RS_LEVEL_1));
	//结果:KSmar

	//[<(0-9)^5>]
	printf("%s\n",TOKRegularExpressionEngineRun("[<(0-9)^5>]","突壳开源,欢迎使用突壳开源产品,欢9.00迎来到突壳开源,突壳123345开源致力于基础软件开发与研究,突壳开源。",RS_LEVEL_0));
	//结果:90012

	//[<(0-9)^5>]
	printf("%s\n",TOKRegularExpressionEngineRun("[<(0-9)^5>]","突壳开源,欢迎使用突壳开源产品,欢9.00迎来到突壳开源,突壳123345开源致力于基础软件开发与研究,突壳开源。",RS_LEVEL_1));
	//结果:12334

	//<(a-zA-Z)^6>
	printf("%s\n",TOKRegularExpressionEngineRun("<(a-zA-Z)^6>","突TOKSmart Compiler壳开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究。",RS_LEVEL_1));
	//结果:TOKSma

	//<(突壳)^1><(0-9)^*>
	printf("%s\n",TOKRegularExpressionEngineRun("<(突壳)^1><(0-9)^*>","突壳2008开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究。",RS_LEVEL_1));
	//结果:突壳2008

	//[<(突壳)^1><(0-9){3,6}>][<(0-9){3,6}>]
	printf("%s\n",TOKRegularExpressionEngineRun("[<(突壳)^1><(0-9){3,6}>][<(0-9){3,6}>]","突壳2008开源,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究。",RS_LEVEL_1));
	//结果:2008

	//[<(突壳开源)^1><(你好)^1><(0-9)^*>][<(你好)^1><(0-9)^*>][<(0-9)^*>]
	printf("%s\n",TOKRegularExpressionEngineRun("[<(突壳开源)^1><(你好)^1><(0-9)^*>][<(你好)^1><(0-9)^*>][<(0-9)^*>]","突壳开源你好2008,欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究。",RS_LEVEL_1));
	//结果:2008

	//[<(突壳开源)^1>|<(开源突壳)^1><(0-9)^*>][<(突壳)^1>|<(开源)^1><(0-9)^*>][<(0-9)^*>]
	printf("%s\n",TOKRegularExpressionEngineRun("[<(突壳开源)^1>|<(开源突壳)^1><(0-9)^*>][<(突壳)^1>|<(你好)^1><(0-9)^*>][<(0-9)^*>]","突壳好2008,开源突壳2008欢迎使用突壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究。",RS_LEVEL_1));
	//结果:2008

	//<(http://)^1><(www.)^1><(a-z)^*>|<(A-Z)^*>|<(0-9)^*><(.com)^1>|<(.net)^1>|<(.cc)^1>
	printf("%s\n",TOKRegularExpressionEngineRun("<(http://)^1><(www.)^1><(a-z)^*>|<(A-Z)^*>|<(0-9)^*><(.cc)^1>|<(.com)^1>|<(.net)^1>","突壳开源你好2008,欢http://www.gtkings.c迎使用突http://www.tok.cc壳开源产品,欢迎来到突壳开源,突壳开源致力于基础软件开发与研究。",RS_LEVEL_1));
	//结果:http://www.tok.cc

	getchar();
	return 0 ;
}

具体函数代码 就看源文件了!

代码简单实用,学习的目标是成熟!

项目下载


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
REEC是一个精简,高效的C语言正则表达式引擎,它使得C语言开发中支持正则表达式,目前已经进化到了1.2.0版本,可以说无论从功能上,还是效率都到达了很好的应用水平,该引擎除支持常用的正则标准之外,还有一些原创的特性,例如正则式的分组、模式敏感等级等等,使得正则表达式更加灵活多变。 编者: 这套正则表达式适用于内存稀少的嵌入式系统,从09年应用至今,据我们所了解的REEC已经在商用产品中做到了千万终端的应用,性能跟稳定性已经过了市场考验。   引擎特性 含义:至少匹配1个,并且至多匹配n个字母。 含义:匹配1个数字。 含义:匹配n个数字。 含义:至少匹配1个,并且至多匹配一个数字。 含义:至少匹配1个,并且至多匹配n个数字。 含义:匹配1个symbol,symbol长度跟取值范围不限。 含义:匹配n个symbol,symbol长度跟取值范围不限。 含义:至少匹配1个,并且至多匹配一个symbol,symbol长度跟取值范围不限。 }> 含义:至少匹配1个,并且至多匹配n个symbol,symbol长度跟取值范围不限。 含义:匹配1个任意字符。 含义:匹配n个任意字符。 含义:至少匹配1个,并且至多匹配一个任意字符。 含义:至少匹配1个,并且至多匹配n个任意字符。 含义:匹配1个小写字母或数字。 含义:匹配n个小写字母或数字。 含义:至少匹配1个,并且至多匹配一个小写字母或数字。 含义:至少匹配1个,并且至多匹配n个小写字母或数字。 含义:匹配1个大写字母或数字。 含义:匹配n个大写字母或数字。 含义:至少匹配1个,并且至多匹配一个大写字母或数字。 含义:至少匹配1个,并且至多匹配n个大写字母或数字。 含义:匹配1个字母或数字。 含义:匹配n个字母或数字。 含义:至少匹配1个,并且至多匹配一个字母或数字。 含义:至少匹配1个,并且至多匹配n个字母或数字。 例子 表达式:[|][|][] 模式串:"54233你好23322323sdafashaha323hasdf你,本次哈哈你好你好哈哈123456哈235" 返回值:“123456”   其它 RO RW段共10KB。  RAM 标签:REEC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值