- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Name: ooptimum
Subject: Re: Проблема с ReverseAlias regex

re_format -- мануал из FreeBSD, в Linux его полный аналог -- man 7 regex (POSIX 
1003.2 regular expressions). Но дело в том, что ни в одном из этих мануалов 
метасимволы "\d" и "\w" не описаны, хотя в Linux последний поддерживается по 
крайней мере в grep (возможно, что это не является POSIX-совместимым 
расширением).

Вообще, я рекомендую в следующих дистрибутивах dpsearch избавиться от 
конструкций типа [A-Z] и [a-z] во всех регулярных выражениях и заменить их на 
[[:upper:]] и [[:lower:]] соответственно. Т.к., как я писал выше, они 
генерируют _разные_ наборы символов в разных системах и разных локалях. 
Например, во FreeBSD, Debian/Ubuntu и SuSE (10.x) Linux они действительно 
соответствуют наборам заглавных и прописных латинских символов соответственно. 
А в Gentoo, Slackware и Mandriva Linux это не так в локалях, отличных от "C" и 
"POSIX". Другие дистрибутивы я не проверял. За то, какие символы попадают между 
п�!
 �рвым и последним символами последовательности в квадратных скобках, отвечает 
LC_COLLATE текущей локали. Проверить это можно выполнив команду "echo {A..Z} 
{a..z} | fmt -w 1 | sort". Например, во FreeBSD или в любом линуксе при 
LC_COLLATE="C" ее вывод будет подобен:
A
B
C
..
Z
a
..
x
y
z
А, например, в Gentoo Linux при любой русской или английской локали (не "C" или 
"POSIX") вывод данной команды будет:
a
A
b
B
c
C
..
x
X
y
Y
z
Z
Это приводит к весьма интересным эффектам, т.е. в данном случае 
последовательность [A-Z] фактически содержит все латинские заглавные буквы и 
все латинские прописные буквы, кроме самой первой -- "a". Проверить это 
достаточно легко. Например, выполнив команду "echo "[aA][bB][zZ]" | sed 
's/[A-Z]//g'". В некоторых системах вывод будет "[a][b][z]", а в некоторых -- 
"[a][][]". Это контр-интуитивно, я понимаю, но моей вины тут нет. И подавляющее 
большинство администраторов даже не догадываются о такой особенности RE.
- - - - - - - - - - - - - - - - - - - - - - - - - - - -

Read the full topic here:
http://dataparksearch.org/cgi-bin/simpleforum.cgi?fid=06;topic_id=1160632300;page=2

Reply via email to