一个简单的搜索英维关于文本,例如:
the quick red fox jumped 1 foot over the lazy 28 pound dog
使用以下搜索
/[[:digit:]]
表现得像
/[[:alnum:]]
也就是说,它会在重复时找到每个字符。就此而言,我尝试的所有括号表达式都表现为 alnum。然而
/[0-9]
按预期工作,只找到了 1、2 和 8。我已经使用 nvi 一段时间了,但我的知识中存在一个巨大的鸿沟。感谢帮助。
答案1
这是一个错误。任何长度为 5 个字符的类名(即除了 之外的所有类名xdigit
)都会被解释为alnum
,这都是因为缺少一个小字符。补丁很简单:
--- regex/regcomp.c~
+++ regex/regcomp.c
@@ -819,7 +819,7 @@
NEXT();
len = p->next - sp;
for (cp = cclasses; cp->name != NULL; cp++)
- if (STRLEN(cp->name) == len && MEMCMP(cp->name, sp, len))
+ if (STRLEN(cp->name) == len && !MEMCMP(cp->name, sp, len))
break;
if (cp->name == NULL) {
/* oops, didn't find it */
我没有报告该错误,也没有发现它在任何地方报告过。请这样做并返回此处。