- 论坛徽章:
- 0
|
30可用积分
本帖最后由 Perlvim 于 2012-12-29 20:10 编辑
有创意的代码均会被转账1000积分
要求:实现 ^ $ * 的功能:
先发布一段 C 实现的代码:- /* match */
- int match(char *regexp, char *text) {
- if (regexp[0] == '^') {
- return matchhere(regexp+1, text);
- }
- do {
- if (matchere(regexp, text)) {
- return 1;
- }
- } while (*text++ != '\0');
- return 0;
- }
- /* mtchhere: */
- int matchhere(char *regexp, char *text) {
- if (regexp[0] == '\0') {
- return 1;
- }
- if (regexp[1] == '*') {
- return matchstar(regexp[0], regexp+2, text);
- }
- if (regexp[0] == "$" && regexp[1] == '\0') {
- return *text == '\0';
- }
- if (*text != '\0' && regexp[1] == '\0') {
- return matchhere(regexp+1, text+1);
- }
- return 0;
- }
- int matchstar(int c, char *regexp, char *text) {
- do {
- if matchhere(regexp, text) {
- return 1;
- } while (*text != '\0' && (*text++ == c || c == '.'));
- return 0;
- }
- }
复制代码 以上代码抄自《代码之美》
我正尝试用Perl实现一个具有基本正则能力的匹配算法。稍后会发布上来。可能超过 500 行 |
|