⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 regsub.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include "regexp.h"/* substitute into one string using the matches from the last regexec() */extern	voidregsub(char *sp,	/* source string */	char *dp,	/* destination string */	int dlen,	Resub *mp,	/* subexpression elements */	int ms)		/* number of elements pointed to by mp */{	char *ssp, *ep;	int i;	ep = dp+dlen-1;	while(*sp != '\0'){		if(*sp == '\\'){			switch(*++sp){			case '0':			case '1':			case '2':			case '3':			case '4':			case '5':			case '6':			case '7':			case '8':			case '9':				i = *sp-'0';				if(mp[i].sp != 0 && mp!=0 && ms>i)					for(ssp = mp[i].sp;					     ssp < mp[i].ep;					     ssp++)						if(dp < ep)							*dp++ = *ssp;				break;			case '\\':				if(dp < ep)					*dp++ = '\\';				break;			case '\0':				sp--;				break;			default:				if(dp < ep)					*dp++ = *sp;				break;			}		}else if(*sp == '&'){							if(mp[0].sp != 0 && mp!=0 && ms>0)			if(mp[0].sp != 0)				for(ssp = mp[0].sp;				     ssp < mp[0].ep; ssp++)					if(dp < ep)						*dp++ = *ssp;		}else{			if(dp < ep)				*dp++ = *sp;		}		sp++;	}	*dp = '\0';}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -