PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 9. �����Ͳ����� | Fast Forward | Next |
PostgreSQL �ṩ������ʵ��ģʽƥ�� �ķ�����SQL��LIKE ������������һЩ�� SIMILAR TO ��������SQL:1999 ����ӽ����ģ��� ��POSIX-���������ʽ�� �����һ��ģʽƥ�亯�� substring �����ã� ������ʹ�� SIMILAR TO ���Ļ��� POSIX ����������ʽ��
��ʾ: ������ģʽƥ���Ҫ�����Щ���࣬������дһЩģʽ������ �滻��ת�����뿼���� Perl �� Tcl дһ���û����庯����
string LIKE pattern [ ESCAPE escape-character ] string NOT LIKE pattern [ ESCAPE escape-character ]
ÿ�� pattern ����һ���ִ��ļ��ϡ� ����� string ������ pattern ������ִ��������ô LIKE ���ʽ�����档 �������������һ������� LIKE �����棬��ô NOT LIKE ���ʽ���ؼ٣� ��֮��Ȼ��һ����Ч�ı��ʽ�� NOT ��string LIKE pattern).��
��� pattern �������ٷֺ� �����»��ߣ���ô��ģʽֻ���������� ��ʱ�� LIKE ����Ϊ����ȺŲ������� �� pattern ����»��� ��_������ƥ�䣩�κε����ַ��� ��һ���ٷֺţ�%��ƥ���κ������� �ַ������ִ���
������һЩ���ӡ�
'abc' LIKE 'abc' true 'abc' LIKE 'a%' true 'abc' LIKE '_b_' true 'abc' LIKE 'c' false
LIKE ģʽƥ�����Ǹ��������ִ��� Ҫƥ�����ִ��ڲ��κ�λ�õ����У���ģʽ�����ٷֺſ�ͷ�ͽ�β��
Ҫƥ���ı����»����߰ٷֺţ�������ƥ�������ַ��� ��pattern ����Ӧ���ַ����� ǰ�������ַ���ȱʡ�������ַ��Ƿ�б�ܣ������������ ESCAPE �Ӿ�ָ��һ���� Ҫƥ�������ַ�����д���������ַ���
��ע�ⷴб�����ִ��ı����Ѿ������⺬���ˣ����������дһ�� ������б�ܵ�ģʽ�����������Ҫ�� SQL �����д������б�ܡ� ��ˣ�дһ��ƥ�䵥����б�ܵ�ģʽʵ����Ҫ�������д�ĸ���б�ܡ� �����ͨ���� ESCAPE ѡ��һ����ͬ�������ַ� ������������������б�ܾͲ����� LIKE �������ַ��ˡ� ����Ȼ���ַ��ı��������������ַ��������㻹����Ҫ������б�ܡ�)
����Ҳ����ͨ��д�� ESCAPE '' �ķ�ʽ ��Ч�عر����ݻ��ƣ���ʱ�����ǾͲ��ܹر��»��ߺͰٷֺŵ����⺬�塣
�ؼ��� ILIKE ���������滻 LIKE�� ���ƥ��͵�ǰ�����������Ǵ�Сд�صġ� ������Բ��� SQL ������ PostgreSQL ��չ��
������ ~~ ��Ч�� LIKE�� �� ~~* ��Ӧ ILIKE�� ���� !~~ �� !~~* ������ �ֱ���� NOT LIKE �� NOT ILIKE��������Щ���������� PostgreSQL ���еġ�
string SIMILAR TO pattern [ESCAPE escape-character] string NOT SIMILAR TO pattern [ESCAPE escape-character]
SIMILAR TO �����Լ���ģʽ�Ƿ�ƥ������ִ�����������١� ���� LIKE �dz����ƣ�ֻ������ʹ�� SQL �������������ʽ���ģʽ�� SQL ����������ʽ���� LIKE ��ʾ������ͨ��������ʽ��ʾ��֮��ŹֵĽ��档
���� LIKE��SIMILAR TO ������ֻ��������ģʽƥ�������ִ���ʱ����ܳɹ�����һ�����ͨ�� ������ʽ��ϰ�߲�ͬ������ͨ��������ʽ�ģʽƥ���ִ������� ���֡� �� LIKE ���Ƶĵط����У�SIMILAR TO ʹ�� _ �� % ��Ϊ�ֱ���������ִ��������ִ��ַ� ��ͨ���������Щ�� POSIX ������ʽ��� . �� .* ���ݣ�
������Щ�� LIKE ���õĹ���֮�⣬ SIMILAR TO ֧��������Щ�� POSIX ������ʽ���õ� ģʽƥ��Ԫ�ַ���
| ��ʶѡ��������ѡ֮һ����
* ��ʾ�ظ�ǰ�������λ����Ρ�
+ ��ʾ�ظ�ǰ�����һ�λ����Ρ�
����ʹ��Բ���� () ������ϳ�һ�����
һ�����������ʽ [...] ����һ���ַ��� ���� POSIX ������ʽһ����
��ע��û���ṩ��Χ�ظ���? �� {...}���� ���������� POSIX ���С�ͬʱ���㣨.������Ԫ�ַ���
�� LIKE һ������б�ܹر�������ЩԪ�ַ������⺬�壻 ��Ȼ����Ҳ������ ESCAPE ��������һ�������ַ���
һЩ���ӣ�
'abc' SIMILAR TO 'abc' true 'abc' SIMILAR TO 'a' false 'abc' SIMILAR TO '%(b|d)%' true 'abc' SIMILAR TO '(b|c)%' false
������������substring�� substring(string from pattern for escape-character)�� �ṩ��һ�����ִ��г�ȡһ��ƥ�� SQL ������ʽģʽ�����ִ��ĺ����� ��SIMILAR TOһ����������ģʽ����ƥ���������ݴ���������ʧЧ�� ���� NULL��Ϊ�˱�ʶ�ڳɹ���ʱ��Ӧ�÷��ص�ģʽ���֣�ģʽ ������ֺ��˫���ţ�"�������������ַ���ƥ����������� ֮���ģʽ���ִ��������ء�
һЩ���ӣ�
substring('foobar' from '%#"o_b#"%' FOR '#') oob substring('foobar' from '#"o_b#"%' FOR '#') NULL
Table 9-11 �г������п��õ� ���� POSIX ������ʽ�IJ�������
Table 9-11. ������ʽƥ�������
������ | ���� | ���� |
---|---|---|
~ | ƥ��������ʽ����Сд��� | 'thomas' ~ '.*thomas.*' |
~* | ƥ��������ʽ����Сд�� | 'thomas' ~* '.*Thomas.*' |
!~ | ��ƥ��������ʽ����Сд��� | 'thomas' !~ '.*Thomas.*' |
!~* | ��ƥ��������ʽ����Сд�� | 'thomas' !~* '.*vadim.*' |
POSIX ������ʽ�ṩ�˱� LIKE �� SIMILAR TO ������ ��ǿ���ģʽƥ��ķ�������� Unix ���ߣ����� egrep�� sed���� awk ʹ��һ���������������������Ƶ�ģʽƥ�����ԡ�
������ʽ��һ���ַ����У����Ƕ���һ���ִ����� ��һ������������д�� ���һ���ִ���������ʽ�����������е�һԱʱ�� ���Ǿ�˵����ִ�ƥ���������ʽ�� �� LIKE һ����ģʽ�ַ�ȷ��ƥ���ִ��ַ��� ������������ʽ�������������ַ� — ����������ʽ�õ� �����ַ��� LIKE �õIJ�ͬ�� �� LIKE ��һ�����ǣ�������ʽ ����ƥ���ִ�����κ�λ�ã����Ǹ�������ʽ��ȷ�عҽ����ִ� �Ŀ�ͷ���߽�β��
һЩ���ӣ�
'abc' ~ 'abc' true 'abc' ~ '^a' true 'abc' ~ '(b|d)' true 'abc' ~ '^(b|c)' false
������������substring��substring(string from pattern)���ṩ�˴��ִ��г�ȡһ��ƥ�� POSIX ������ʽģʽ�� ���ִ��ķ��������û��ƥ�������� NULL����������ı���ƥ��ģʽ���Dz��֡� ���������ģʽ�����κ�Բ��������ô������ƥ���һ���ӱ��ʽ����Ӧ��һ����Բ�����ģ� ���ı�����������ڱ��ʽ��ʹ��Բ�������ֲ��뵼��������⣬��ô��������������ʽ��߷���һ�Զ�Բ������ �������Ҫ�����ȡ���ӱ��ʽǰ��Բ���������������ķDz�����Բ������
һЩ���ӣ�
substring('foobar' from 'o.b') oob substring('foobar' from 'o(.)b') o
PostgreSQL ��������ʽ��ʹ�� Henry Spencer д��һ������ʵ�ֵġ������������ʽ�Ĵ��������Ǵ������ֲ�ҳ���� ���ֿ��������ġ�
������ʽ��"RE"������POSIX1003.2 �ж��壬 ����������ʽ����չ��RE������ERE �������Ͼ�����Щ�� egrep ��ģ��� "����"��RE������BRE �������Ͼ�����Щ�� ed��ģ��� PostgreSQL ������ʽ��ʵ���ˣ����һ�����һЩPOSIX����û�еģ� ������Ϊ������ Perl ���� Tcl �����������еõ��㷺Ӧ�õ�һЩ��չ�� ʹ������Щ��POSIX��չ�� RE ���� RE�� ���������ĵ���˵�� ARE��ARE ������ȫ�� ERE �ij��������� BRE �м��������ϵIJ����ݣ��Լ���������ƣ��������������� ARE �� ERE ��ʽ�� ������Щֻ������ ARE �����ԣ�Ȼ������ BRE ��������ʲô��
ע��: ���ǿ���ͨ����������ʱ����regex_flavor��ѡ�� PostgreSQL ���ܵ�������ʽ����ʽ�� ͨ����������advanced���������������ǿ���ѡ�� extended �� 7.4 ��ǰ��PostgreSQL�汾�����������¼��ݡ�
���ִ����� RE ��һ�������ǿյ� ��֧�� �� | �ָ�����ƥ���κ�ƥ������һ����֧�Ķ�����
һ����֧��һ�����������ε�ԭ������Լ�� ���Ӷ��ɡ�һ��ԭ��ƥ���һ����Ȼ������ԭ��ƥ��ڶ����� �Դ����ơ�
һ�������ε�ԭ����һ��ԭ���� ������ܸ���һ�����ʡ�û�����ʵ�ʱ����ƥ��һ��ԭ�ӣ� �����ʵ�ʱ��������ƥ�����ɸ�ԭ�ӡ�ԭ���������� Table 9-12������ʾ���κο��ܡ� ���ܵ����ʺ����ǵĺ����� Table 9-13 ����ʾ��
һ�� constraint ƥ��һ�����ִ�����ֻ���������ض������²�ƥ�䡣 Լ���������ܹ�ʹ��ԭ�ӵĵط�ʹ�ã�ֻ�������ܸ������ʡ����ԭ���� Table 9-14 ����ʾ�� �����Լ���Ժ�������
Table 9-12. ������ʽԭ��
ԭ�� | ���� |
---|---|
(re) | ������� re ���κ�������ʽ�� ƥ��һ���� re ��ƥ�䣬�пɱ����ƥ����Ϣ |
(?:re) | ͬ�ϣ�����ƥ�䲻�ᱻ���� ��һ��"������"Բ������ ��ֻ�� ARE ���У� |
. | ƥ�����ⵥ���ַ� |
[chars] | һ�� ���������ʽ�� ƥ��������ַ������� Section 9.7.3.2 ��ȡ����ϸ�ڣ� |
\k | ������� k �Ƿ���ĸ�����ַ��� ƥ��һ��������ͨ�ַ��������ض��ַ��� ���磬\\ ƥ��һ����б�� |
\c | ����� c ��һ����ĸ���� �����ܸ��������ַ���������һ�������� ���� Section 9.7.3.3���������� ARE�� �� ERE �� BRE �У���ƥ�� c�� |
{ | ����������һ���ַ������������֣� ��ô��ƥ��������{���������һ�����֣� ��ô������Χ�Ŀ�ʼ�������棩 |
x | ����� x ��һ��û�����������ĵ����ַ��� ��ƥ����ַ� |
RE ������ \ ���
ע��: Ҫ��ס��б�ܣ�\���� PostgreSQL �ִ��ı����Ѿ������⺬���ˡ� Ҫдһ��������б�ܵ�ģʽ��������������д������б�ܡ����磺
'123' ~ '^\\d{3}' true
Table 9-13. ������ʽ����
���� | ƥ�� |
---|---|
* | һ��ƥ�� 0 ���߸����ԭ�ӵ����� |
+ | һ��ƥ�� 1 ���߸����ԭ�ӵ����� |
? | һ��ƥ�� 0 ������ 1 ��ԭ�ӵ����� |
{m} | һ������ƥ�� m ��ԭ�ӵ����� |
{m,} | һ��ƥ��m �����߸���ԭ�ӵ����� |
{m,n} | һ��ƥ�� m �� n �����������ˣ� ԭ�ӵ����У�m ���ܱ� n �� |
*? | * �ķ�̰��ģʽ |
+? | + �ķ�̰��ģʽ |
?? | ? �ķ�̰��ģʽ |
{m}? | {m} �ķ�̰��ģʽ |
{m,}? | {m,} �ķ�̰��ģʽ |
{m,n}? | {m,n} �ķ�̰��ģʽ |
{...} ����ʽ��������Χ�� һ����Χ�ڵ����� m �� n ��������ʮ���������� �������ֵ�� 0 �� 255�������䣩��
��̰�������ʣ�ֻ�� ARE �п��ã�ƥ���Ӧ������ ��̰����ģʽ����������Ѱ�����ٵ�ƥ�䣬����������ƥ�䡣 ���� Section 9.7.3.5 ��ȡϸ�ڡ�
ע��: һ�����ʲ��ܽ���������һ�����ʺ��档���ʲ����DZ��ʽ�����ӱ��ʽ�Ŀ�ͷ�� Ҳ���ܸ��� ^ ���� | ���档
Table 9-14. ������ʽԼ��
Լ�� | ���� |
---|---|
^ | ƥ���ִ��Ŀ�ͷ |
$ | ƥ���ִ��Ľ�β |
(?=re) | ��ǰհ ƥ���κ�ƥ�� re �� ���ִ���ʼ�㣨ֻ�� ARE ���У� |
(?!re) | ��ǰհ ƥ���κβ�ƥ�� re �����ִ�����ʼ�㡣��ֻ�� ARE ���У� |
ǰհԼ�����ܰ��������� ������ Section 9.7.3.3�������������������Բ���� ������Ϊ�Dz�����ġ�
���������ʽ��һ����Χ�� [] ����ַ��б���ͨ��ƥ�����ⵥ�� �б��е��ַ����ּ����ģ��� ����б��� ^ ��ͷ����ƥ�� ���ⵥ�����ּ����ģ����ڸ��б��е��ַ��� ������б��������ַ���-������ ���������������ַ����������ڣ�֮��������ַ���Χ����д�� ���磬�� ASCII �� [0-9] �����κ�ʮ�������֡� ������Χ����һ���յ��ǷǷ��ģ����磬 a-c-e�������Χ���ַ�����ϵ���У� ����ֲ�ij���Ӧ���������ǡ�
�����б��а����ı� ]������������ �б�����ַ������ܻ���һ�� ^ ���棩�� �����б��а����ı� -������������ �б�����ַ�����ĩ�ַ�������һ����Χ�ĵڶ����յ㡣 �����б��а��ı�-������Χ����㣬 ������ [. �� .] ��Χ�������������ͳ�Ϊһ������Ԫ�أ������ģ��� ������Щ�ַ�������һЩ�� [ ����ϣ����¶Σ����Լ����ݣ�ֻ�� ARE ����Ч�����⣬�������������ַ� �ڷ��������ʽ�ﶼʧȥ���ǵ����⺬�塣 �ر��ǣ��� ERE �� BRE ������ \ ��������ģ� ���� ARE ���������ģ���������һ�����ݣ���
��һ�����������ʽ�һ������Ԫ�أ�һ���ַ���һ������ һ���ַ��Ķ��ַ����У�����һ����ʾ������������ļ������У� ������ [. �� .] �����ʱ���ʾ�ü���Ԫ�ص��ַ����С��������Ǹ÷������б� ��һ��Ԫ�ء����һ���������ַ�����Ԫ�صķ��������ʽ�� ����ƥ�����һ���ַ������磬����������а���һ�� ch ����Ԫ�أ� ��ô RE [[.ch.]]*c ƥ�� chchcc ��ͷ����ַ��� ����ע����ʵ�� [. �� .] �������ĵ�һ���ַ��������ˡ���
ע��: PostgreSQL Ŀǰû�ж��ַ�����Ԫ�ء���Щ��Ϣ�����˽��������е���Ϊ��
�ڷ��������ʽ���[= �� =] ���Χ�ļ���Ԫ����һ����Ч�� ��������������м���Ԫ�ص��ַ����У����������� �����û��������Ч����Ԫ�أ���ô�ͺ����װԪ���� [. �� .]���� ���磬��� o �� ^ ��һ����Ч��ij�Ա����ô [[=o=]]��[[=^=]]���� [o^] ����ͬ��ġ�һ����Ч������һ����Χ�� �˵㡣
�ڷ��������ʽ��� [: �� :] �����װ���ַ������ִ��� ���ڸñ�������ַ����б� �����ַ��������ǣ�alnum�� alpha��blank�� cntrl��digit�� graph��lower�� print��punct�� space��upper�� xdigit�� ���Ǵ����� ctype �ﶨ����ַ��� ���ػ����ÿ��ܻ��ṩ�����ı��ַ���������һ����Χ�Ķ˵㡣
�ڷ��������ʽ�����������������������ʽ [[:<:]] �� [[:>:]] ��Լ�����ֱ�ƥ��һ�����ʿ�ͷ�ͽ����Ŀմ��� ���ʶ���Ϊһ�������ַ����У�ǰ��ͺ��涼û�����������ַ��� �����ַ���һ����ĸ���֣��� ctype �ﶨ���һ���� ����һ���»��ߡ�����һ����չ������POSIX1003.2�� �������沢û��˵���� ����������ֲ������ϵͳ��ȥ�������һ��ҪС��ʹ�á� ͨ������������Լ�����ݸ���Щ�����Dz��Ǹ��������ǿ϶����������룩��
�������� \ ��ͷ���������һ����ĸ�����ַ����������С� �����кü��ֱ��壺�ַ������д��Լ�����ݣ��Լ������á��� ARE � ���һ�� \ �������һ����ĸ���֣����Dz�δ���һ���Ϸ������ݣ� ��ô���ǷǷ��ġ��� ERE ����û�����ݣ��ڷ��������ʽ֮�⣬һ��������ĸ�����ַ� �� \ ֻ�DZ�ʾ���ַ���һ����ͨ���ַ�������һ�����������ʽ� \ ��һ����ͨ���ַ���������ʵ������ ERE �� ARE ֮��IJ����ݡ���
�ַ����������ڷ�����������RE����Щ���ɴ�ӡ���ַ��� ������ Table 9-15 ���г���
����д���������ṩһЩ���õ��ַ�����д�� ������ Table 9-16 ����ʾ��
Լ��������һ��Լ������������ض��������� ��ƥ��ÿ��ִ��������� Table 9-17 ����ʾ��
������ ��\n��ƥ������ n ָ����ǰ���Բ�����ӱ��ʽƥ���ͬһ���ִ� ������ Table 9-18�������磬 ([bc])\1ƥ��bb����cc�� ���Dz�ƥ��bc����cb��RE���ӱ��ʽ������ȫ�ں�����ǰ�档 �Dz���Բ�������������ӱ��ʽ��
ע��: ��ע�⣬�����ģʽ����һ�� SQL �ִ��������룬��ô����ǰ���� \ ��Ҫ�ɱ���д��
Table 9-15. ������ʽ�ַ�������
���� | ���� |
---|---|
\a | ���ѣ��������ַ����� C ��һ�� |
\b | �˸� C ��һ�� |
\B | \ ��ͬ��ʣ����ڼ��ٷ�б�ܼӱ�����Ҫ |
\cX | ������ X �������ַ����ַ��� �� 5 λ�� X �����ͬ������λ���� 0 |
\e | �������������� ESC ���ַ��� ������ǣ����ǰ˽���ֵΪ 033 ���ַ� |
\f | ��ֽ���� C ��һ�� |
\n | ���У��� C ��һ�� |
\r | �س����� C ��һ�� |
\t | ˮƽ�Ʊ������ C ��һ�� |
\uwxyz | ������� wxyz ��ǡ����λʮ������λ�� �����ֽ���� Unicode �ַ� U+wxyz |
\Ustuvwxyz | ������� stuvwxyz ��ǡ�ð�λʮ������λ�� Ϊ���ּ����е� Unicode 32 λ��չ������ |
\v | ��ֱ�Ʊ������ C ��һ�� |
\xhhh | ������ hhh ��һ��ʮ���������У� ʮ������ֵΪ 0xhhh ���ַ� ���������˼���ʮ������λ������һ���ַ��� |
\0 | ֵΪ 0 ���ַ� |
\xy | ������� xy ��ǡ�������˽���λ�� ���Ҳ���һ�� ���������˽���ֵΪ 0xy ���ַ� |
\xyz | ������� xyz ��ǡ����λ�˽���λ�� ���Ҳ���һ�� �������� �˽���ֵΪ 0xy���ַ� |
ʮ������λ�� 0-9��a-f���� A-F���˽���λ�� 0-7��
�ַ����������DZ�������ͨ�ַ������磬\135 �� ASCII �е� ]�� �� \135 ������ֹһ�����������ʽ��
Table 9-16. ������ʽ����д����
���� | ���� |
---|---|
\d | [[:digit:]] |
\s | [[:space:]] |
\w | [[:alnum:]_] ��ע�⣬�����ǰ����»��ߵģ� |
\D | [^[:digit:]] |
\S | [^[:space:]] |
\W | [^[:alnum:]_] ��ע�������ǰ����»��ߵģ� |
�ڷ��������ʽ�\d��\s�� �� \w ��ʧȥ���ǵ���㷽�������� \D��\S�� �� \W �ǷǷ��ġ���Ҳ����˵������ [a-c\d] ��Ч�� [a-c[:digit:]]��ͬ�� [a-c\D]����ԭ����Ч�� [a-c^[:digit:]]�ģ�Ҳ�ǷǷ��ġ���
Table 9-17. ������ʽԼ������
���� | ���� |
---|---|
\A | ֻƥ���ִ���ͷ�������� Section 9.7.3.5 ��ȡ���� ^ �������Ϣ�� |
\m | ֻƥ��һ���ʵĿ�ͷ |
\M | ֻƥ��һ���ʵĽ�β |
\y | ֻƥ��һ���ʵĿ�ͷ���߽�β |
\Y | ֻƥ����Щ�Ȳ��ǴʵĿ�ͷҲ���ǴʵĽ�β�ĵ� |
\Z | ֻƥ��һ���ִ��Ľ�β ������ Section 9.7.3.5 ��ȡ����$�������Ϣ�� |
һ���ʵĶ��������� [[:<:]] �� [[:>:]] ���������ڷ��������ʽ�Լ�������ǷǷ��ġ�
Table 9-18. ������ʽ������
���� | ���� |
---|---|
\m | ������� m ��һ������ʮ����λ�� һ��ָ��� m ���ӱ��ʽ�ĺ����� |
\mnn | ������� m ��һ������ʮ����λ���� nn �Ǹ����ʮ����λ������ʮ������ֵ mnn ���ܴ��ڵ����λ��Ϊֹ�ıպϲ���Բ�����ĸ����� һ��ָ��� mnn ���ӱ��ʽ�ĺ����� |
ע��: �ڰ˽����ַ������ݺͺ�����֮����һ����ʷ�̳е�������ڣ���������� ͨ��������������ģ�������������������ǰ�������DZ�ʾ����һ���˽������ݡ� �������������֣����û�и����κ��������֣���ô������Ϊ�Ǻ����á� һ��������λ�ķ��㿪ͷ������Ҳ��Ϊ�Ǻ����á���ֻҪ���ں��ʵ��ӱ��ʽ���� ��Ҳ����˵����ֵ�ں����õĺϷ���Χ�ǣ����������Ϊ��һ���˽��ơ�
����������������Ҫ�֮�⣬���м���������ʽ���������
ͨ����RE �ķ�ζ�� regex_flavor ���������ǣ������������ ���Ա�һ��ָʾ��ǰ���ǡ����һ�� RE ��***: ��ͷ����ôʣ�µ� RE �������� ARE������ regex_flavor ��ʲô�� ����κ����͵� RE �� ***=��ͷ�� ��ôʣ�µ� RE ������һ���ı��������е��ַ�������Ϊ��һ����ͨ�ַ���
һ�� ARE ������Ƕ��ѡ����ͷ��һ��(?xyz) ���У������ xyz ��һ��������ĸ�ַ�������Ӱ��ʣ�� RE ��ѡ� ��Щѡ����κ�ǰ���жϵ�ѡ����� RE ��ζ�ʹ�Сд�����ԣ������õ�ѡ����ĸ �� Table 9-19 ��ʾ��
Table 9-19. ARE Ƕ��ѡ����ĸ
ѡ�� | ���� |
---|---|
b | ʣ�µ� RE �� BRE |
c | ��Сд����ƥ�䣨���Dz��������ͣ� |
e | ʣ�µ� RE �� ERE |
i | ��Сд������ƥ�䣨���� Section 9.7.3.5�� �����Dz��������ͣ� |
m | n ����ʷͬ��� |
n | ��������ƥ�䣨���� Section 9.7.3.5�� |
p | ������������ƥ�䣨���� Section 9.7.3.5�� |
q | ���� RE Ϊһ���ı���"����"���ִ������ж�����ͨ�ַ� |
s | ����������ƥ�䣨ȱʡ�� |
t | �����ȱʡ�������ģ� |
w | ��ת�����������У�"����"��ƥ�䣨���� Section 9.7.3.5�� |
x | ��չ����������ģ� |
Ƕ���ѡ������ֹ�����е� ) �������á�����ֻ�� ARE �Ŀ�ʼ�������� ������У������κ� ***: ָʾ�����棩��
����ͨ���ģ�����RE �������������������ַ�����Ҫ���� ����һ����չ�������ͨ������Ƕ��� x ѡ���á� ����չ��RE �еĿհ��ַ������ԣ�������Щ�� # ������֮�� ���ַ�һ�����������������Ǹ�һ�����ӵ� RE �ֶκ�ע�͡���������������� �����������⣺
ǰ���� \ �Ŀհ��ַ����� # ����
��������Ŀհ��� # ����
�ڶ��ַ��������治�ܳ��ֿհ�ע�ͣ����� (?:��
������հ��ǿո�ˮƽ�Ʊ�������У����κ����� space ���հף��ַ�����ַ���
����� ARE ����������ʽ���棬���� (?#ttt) ������� ttt �����ⲻ���� ) ���ı�����һ��ע�ͣ� ��ȫ�����ԡ�ͬ���������Ķ����Dz���������ڶ��ַ����ŵ��ַ��м�ģ� ���� (?:��������ע���DZ����õĻ��Ƶĸ���Զ����ʷ��ɵģ� ���ǵ��÷��Ѿ������ˣ�����Ӧ��ʹ����չ���������
���������һ����ʼ���� ***= ָʾ������ô������ЩԪ� ��չ������ʹ�ã���Ϊ������ʾ���û����뵱��һ���ı��ִ� ������ RE �Դ���
�� RE ����ƥ��������ִ��ж���һ�����ִ�������£� RE ƥ���ִ����ǰ���Ǹ����ִ������ RE ����ƥ�����Ǹ�λ�ÿ�ʼ �Ķ�����ִ���Ҫô��ȡ������ִ���Ҫô����̵ģ��������֣� ȡ���� RE ��̰���� ���� ��̰������
һ�� RE �Ƿ�̰��ȡ�����������
�����ԭ�ӣ��Լ�����Լ������û��̰�����ԣ���Ϊ���DZϾ���ƥ������仯���ı�����
��һ�� RE ��Χ����Բ����������ı���̰���ԡ�
һ����һ���̶��ظ����������� ��{m} ���� {m}?�� ֮������ԭ�Ӻ�ԭ����������ͬ����̰���ԣ�������û�У���
һ����������ͨ�����ʣ����� {m,n} �� m ���� n �������������ԭ����̰���ģ���ѡ�ƥ�䣩��
һ������̰�����ʣ����� {m,n}? �� m ���� n �������֮����ԭ���Ƿ�̰���ģ���ѡ���ƥ�䣩��
һ����֧ — Ҳ����˵��һ��û�ж��� | ������ RE — ��������ĵ�һ����̰�����Ե�����ԭ������ͬ����̰���ԡ�
һ���� | �����������������������߸����֧��ɵ� RE ����̰���ġ�
����Ĺ�����������̰�����Բ����������ڶ���������ԭ�ӣ� ����Ҳ�����ڰ�������ԭ�ӵķ�֧������ RE���������˼�ǣ� ƥ���ǰ��շ�֧�������� RE ��Ϊһ������ƥ���������̵����ִ��Ŀ��ܡ� һ������ƥ��ij���ȷ������ôƥ�������ӱ��ʽ�IJ��־ͻ��ڸ��ӱ��ʽ��̰�����Խ����жϣ� �� RE ���濿ǰ���ӱ��ʽ�����ȼ����ڿ�����ӱ��ʽ��
һ�������Щ�����ӣ�
SELECT SUBSTRING('XY1234Z', 'Y*([0-9]{1,3})'); Result: 123 SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})'); Result: 1
�ڵ�һ�������RE ��Ϊ������̰���ģ���Ϊ Y* ��̰���ġ� ������ƥ��� Y ��ʼ�Ķ�����������ƥ������λ�ÿ�ʼ������ִ��� Ҳ���ǣ�Y123������������Բ������Χ�IJ��֣�����˵�� 123�� �ڵڶ�������� RE ��������һ����̰���� RE����Ϊ Y*? �Ƿ�̰���ġ� ������ƥ��� Y ��ʼ����̵����ִ���Ҳ����˵ Y1�� �ӱ��ʽ [0-9]{1,3} ��̰���ģ�����������������ƥ�䳤�ȵľ����� ���������ֻƥ�� 1��
��˵�����һ�� RE ͬʱ����̰���ͷ�̰�����ӱ��ʽ�� ��ô��ƥ�䳤��Ҫô������ܣ�Ҫô����̿��ܣ�ȡ���ڸ����� RE �����̰�����ԡ� ���ӱ��ʽ�����̰������ֻӰ�������ƥ��������ӱ��ʽ֮�������"�Խ�"�Ķ��١�
���� {1,1} �� {1,1}? ���Էֱ�������һ���ӱ��ʽ�������� RE ��ǿ��̰�����߷�̰����
ƥ�䳤�������ַ������ģ������Ǽ��ϵ�Ԫ�ء�һ�����ִ��ᱻ��Ϊ��ʲô����ƥ�䳤�� ���磺bb* ƥ�� abbbc ���м������ַ��� (week|wee)(night|knights) ƥ�� weeknights ������ʮ���ַ��� �� (.*).* ƥ�� abc��ʱ��Բ������Χ���ӱ��ʽ ƥ�����������ַ���������� (a*)* ƥ�� bc����ô RE ��Բ���� �ӱ��ʽ��ƥ�������ִ���
��������˴�Сд�ص�ƥ�䣬��ôЧ���ͺ����������ĸ�ϵ� ��Сд����ȡ����һ�������һ�����ڴ�Сд������ĸ��һ�� ��ͨ�ַ�����ʽ�����ڷ��������ʽ���棬��ô��ʵ���ϱ�ת���� һ��������Сд�ķ��������ʽ��Ҳ����˵��x ��� [xX]�� �����������һ�����������ʽ���棬��ô�������д�Сд��ͬ�嶼������ ���������ʽ�У�Ҳ����˵��[x] ��� [xX]�� �� [^x] ��� [^xX]��
�����������������ƥ�䣬. ��ʹ��^�ķ��������ʽ ����Զ����ƥ�������ַ���������ƥ��;��Բ�������У����� RE ��ȷ�ذ����� ���������������^ ��$ ���˷ֱ�ƥ�� �ִ���ͷ�ͽ�β֮�⣬�����ֱ�ƥ�����к����ǰ�� �Ŀ��ִ������� ARE ���� \A �� \Z ��Ȼֻƥ���ִ��Ŀ�ͷ�ͽ�β��
��������˲�����������ƥ�䣬��ô��Ӱ�� . �ͷ��������ʽ�� ���ʱ�����������ƥ��һ�������Dz�Ӱ�� ^ �� $��
��������˷�ת��������ƥ�䣬��ô��Ӱ�� ^ �� $�� ���ú���������ƥ����һ�������Dz�Ӱ�� . �ͷ��������ʽ�� ���ûʲô̫����;��ֻ��Ϊ�˶Գ��ṩ�ġ�
�����ʵ����� RE �ij���û���ر�����ƣ����ǣ���Щϣ���ܹ� �кܺ���ֲ�еij���Ӧ�ñ���д���� 256 �ֽڵ� RE����Ϊ POSIX ���� ��ʵ�ֿ��Ծܾ����������� RE��
ARE ʵ���Ϻ� POSIX ERE �����ݵ�Ψһ���������ڷ��������ʽ�� \ ���� ʧȥ������ĺ��塣�������� ARE ���Զ�ʹ���� POSIX ERE �����ǷǷ������� δ���塢δ����Ч�������ָʾ���� *** ������ POSIX �� BRE �� ERE ֮������
��� ARE ��չ���Ǵ� Perl ��������ģ�������Щ�������ģ������� һ�£��Լ�һЩPerl��û�г��ֵ���չ��Ҫע��IJ����ݰ��� \b�� \B���Խ�β������ȱ���ر�Ĵ�������Щ��������ƥ��ĸ��ӵ� ���뷽�������ʽ����ǰհԼ�����Բ�����ͷ��������õ����ƣ��Լ��/��� ƥ�䣨�����ǵ�һƥ�䣩���塣
PostgreSQL 7.4 ֮ǰ�İ汾��� ARE �� ERE ���������dz� �����IJ����ݣ�
�� ARE ��������һ����ĸ���ֵ� \ Ҫô��һ�����ݣ�Ҫô�Ǵ��� ��������ǰ�İ汾���ֻ��д�Ǹ���ĸ���ֵ�����һ�ַ��������Ӧ�ò���ʲô���⣬ ��Ϊ����ǰ�İ汾��û��ʲôԭ��������д���������С�
�� ARE �\�� []�ﻹ��һ�������ַ��� ����ڷ��������ʽ���һ���ı� \ ����д�� \\��
��Ȼ��Щ����Դ����Ӧ�ö���˵�����ܲ������⣬ ����Ҫʱ�����ͨ������ regex_flavor Ϊ extended ��������Щ���⡣
BRE �ڼ�������� ERE ��̫һ����|��+���� ? ������ͨ�ַ�������û�е�Ч�Ĺ����滻����Χ�ķָ����� \{ �� \}�� ��Ϊ { �� } ��������ͨ�ַ���Ƕ���ӱ��ʽ��Բ������ \( �� \)����Ϊ ( �� ) ��������ͨ�ַ��� ������ RE ��ͷ������Բ������װ���ӱ��ʽ��ͷ��^ ������ͨ�ַ��� ������ RE ��β������Բ������װ���ӱ��ʽ�Ľ�β��$ ��һ����ͨ�ַ��� ����� * ������ RE ��ͷ������Բ������װ���ӱ��ʽ��ͷ ��ǰ������� ^ ������ô���Ǹ���ͨ�ַ��� ������õ����ֵĺ����ã��Լ� \< �� \> �ֱ��� [[:<:]] �� [[:>:]]��ͬ��ʣ�û�����������ݡ�