9.7. ģʽƥ��

PostgreSQL �ṩ������ʵ��ģʽƥ�� �ķ�����SQL��LIKE ������������һЩ�� SIMILAR TO ��������SQL:1999 ����ӽ����ģ��� ��POSIX-���������ʽ�� ���⻹��һ��ģʽƥ�亯�� substring �����ã� ������ʹ�� SIMILAR TO ���Ļ��� POSIX ����������ʽ��

��ʾ: ������ģʽƥ���Ҫ�����Щ���࣬������дһЩģʽ������ �滻��ת�����뿼���� Perl �� Tcl дһ���û����庯����

9.7.1. LIKE

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 ���еġ�

9.7.2. SIMILAR TO ������ʽ

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 ���С�ͬʱ���㣨.������Ԫ�ַ���

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

9.7.3. POSIX ������ʽ

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 д��һ������ʵ�ֵġ������������ʽ�Ĵ󲿷��������Ǵ������ֲ�ҳ���� ���ֿ��������ġ�

9.7.3.1. ������ʽ

������ʽ��"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�����ġ�

9.7.3.2. ���������ʽ

���������ʽ��һ����Χ�� [] ����ַ��б���ͨ��ƥ�����ⵥ�� �б��е��ַ����ּ����ģ��� ����б��� ^ ��ͷ����ƥ�� ���ⵥ�����ּ����ģ����ڸ��б��е��ַ��� ������б��������ַ���-������ ���������������ַ����������ڣ�֮��������ַ���Χ����д�� ���磬�� 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��Ǹ���׼�����ǿ϶����������룩��

9.7.3.3. ������ʽ����

�������� \ ��ͷ���������һ����ĸ�����ַ����������С� �����кü��ֱ��壺�ַ������д��Լ�����ݣ��Լ������á��� 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�ʾ����һ���˽������ݡ� �������������֣����û�и����κ��������֣���ô������Ϊ�Ǻ����á� һ��������λ�ķ��㿪ͷ������Ҳ��Ϊ�Ǻ����á���ֻҪ���ں��ʵ��ӱ��ʽ���� ��Ҳ����˵����ֵ�ں����õĺϷ���Χ�ǣ����������Ϊ��һ���˽��ơ�

9.7.3.4. ������ʽԪ�﷨

����������������Ҫ�﷨֮�⣬���м���������ʽ�������﷨��

ͨ����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 �Դ���

9.7.3.5. ������ʽƥ�����

�� 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�Ӱ�� . �ͷ��������ʽ�� ���ûʲô̫����;��ֻ��Ϊ�˶Գ��ṩ�ġ�

9.7.3.6. ���ƺͼ�����

�����ʵ����� 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 ��������Щ���⡣

9.7.3.7. ����������ʽ

BRE �ڼ�������� ERE ��̫һ����|��+���� ? ������ͨ�ַ�������û�е�Ч�Ĺ����滻����Χ�ķָ����� \{ �� \}�� ��Ϊ { �� } ��������ͨ�ַ���Ƕ�׵��ӱ��ʽ��Բ������ \( �� \)����Ϊ ( �� ) ��������ͨ�ַ��� ������ RE ��ͷ������Բ������װ���ӱ��ʽ��ͷ��^ ������ͨ�ַ��� ������ RE ��β������Բ������װ���ӱ��ʽ�Ľ�β��$ ��һ����ͨ�ַ��� ����� * ������ RE ��ͷ������Բ������װ���ӱ��ʽ��ͷ ��ǰ������� ^ ������ô���Ǹ���ͨ�ַ��� ��󣬿����õ����ֵĺ����ã��Լ� \< �� \> �ֱ��� [[:<:]] �� [[:>:]]��ͬ��ʣ�û�����������ݡ�