- - - - - - - - - - - - - - - - - - - - - - - - - - - -
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