간단한 검색잉웨이텍스트와 관련하여 예를 들면 다음과 같습니다.
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 */
나는 버그를 보고하지 않았고 어디에도 보고된 것을 찾지 못했습니다. 그렇게 하고 여기로 돌아오십시오.