December 17, 2004
��������돫�»�����������Perl ���µµ�̏��½���½»��µ»��¡ߏ��������«��������¡µµ�̏��½���½ Lover ��ď�����·������\³\���\���\���\������������·��������¡�\���\���\���\��������\���\���\���\Ð���¼�����������Џ����������������������������̏������������� (��³)��¡�
���µµ�̏��½���½������³Ð��𡯏�����\���\����������¹���������Ð��¡�\·\��\���\»���������������������������������²���������·������»��������������Ώ������������������¹��¡�
��돫ҏ����䏢¡�Shibuya.pm ������\���\���\���\«\���\������¼\���������¹��ԏ����������ď�돪��������������������������������� XML ·��������� CPAN \���\���\������¼\�����������������������»��������������������쏢���������돢¡�XML ������ parse �����������������������я��������µµ�̏��½���½������»��������Џ��·��������������������¡ߏ����������������Ï���������½Ð�����������������¡�ҏ��·���µ��������������������ď����ď�����������·�����ď�¡�
parser ������½��Џ������������̏�����������½����������������XML::Simple ��돪��������¡ߏ��������«\���\��������������¼«����̏��������Ð���·������������¼«²��䏢������¡���¼��ҏ����� Chief Regular Expressioner �����������������Ï�����½��Џ�����»������� (¼«¾���) ����¾���������ď������ӏ��������·��������¡����ď�������������������¡µµ�̏��½���½\��\���\��\���������\���\��ď�����������½��Џ����������������Ώ����������Ï��«������������»�ߏ��������������¹�����ď�¡�
���µ��������¡µµ�̏��½���½������»��������Ï����������¡돫����������������·��������¡�
qr//
(quote regex) �ޏ��»»»��ҏ����������������Ï������̏����������������¹��¡�¾������·����돢����
qr//
�ޏ��»»»��ҏ�����»��������Џ��·�����ď�돪�������¡��³���������������Ï��������³������������µ��������؏�����������·�����ď�¡�my $regexp = qr/\s+/; print $regexp;���³������������¼���¹��ԏ��¹��������������¡��³���������������Ï�����½Ð�������µ���������������¹��¡�
(?-xism:\s+)
���³������»��Џ���²��ď�����
(?-xism:
���� )
���������«�����������Ï�¡��������������������«�����������������������������������������������������������������������������Ï������폢¡ߏ�����»�ߏ��������������·�����ď�¡�����
xism
������������²��ď��µ���폢¡ߏ���X Japan ¼���µ���¼��� (Xism)���폢¡ߏ����Ώ����ď�����������µ��ď�������¡������������ď�¡�¼����������������Ï�����½���¾���»��ҏ����ҏ����؏��ޏ����ď��µµ�̏��½���½��������������¡�¹¹�������������������½¾������������̢���̏��·���������¹��¡�
my $regexp = qr/./s; print $regexp;���³������������¼���¹��ԏ��¹���������������³���������������Ï�����½Ð�������µ���������������¹��¡�
(?s-xim:.)
���ӏ�������¡������«�����������ď���X Japan ¼���µ���¼��ԏ����������������������������я��������쏢¡ߏ�����»�ߏ��������������·�����ď�¡�
���½���������������·��������������¡��³������\·\���\���\���\���\¹�����������������������돪�³�돢���������������������������������������������«�������������������������»�����я�¡�
�����������������Ï���µ��ҏ�������¡�
- ���½���������½������»�����������������������ď�������ҏ��«�����ď��³���������̏�����������
- ���������������«�����ӏ���������������������¼��ҏ��������������½�����я�����½��Џ�����«�����ď��¹��������ď������ӏ��̡돫���ď��������µ���������������
- Google �����������������·�����������Ώ������������돫������⏪������Џ�����¾��Ï����я����������폢�������������ޏ�����������
- ����Perl ���µµ�̏��½���½»��µ»��¡ߏ�����¾���²��Ï��µ������������������������������
- ���������·����������������Perl \���\�����¡ߏ�����������¾���²��Ï��µ������������������������������
���µµ�̏��½���½������¹½��������������¡�
(
���� )
�����������������Ï�¡�\\���\��\���\��� (������������»²¾���) ���µ������������\���\���\¹\���²½������½��Џ���������̏����������������¹��¡����³������������������������������
(foo)+
������½��Џ�������������¡�\���\���\¹\���²½���µ������������������������ foo ���������«���«������ +
�����������������Ï���»���������»��� (quantifier) ���̏�������⏢����������������������������¡�foo ���� 1 ²��ѡ돪�¾������³��������¡�foo ������ foofoo ������ foofoofoo �����㏢�¹������\���\���\������·���������¹��¡�³������\���µµ�̏��½���½ (extended regular expression) ������\·���¼\��\���\¹��������¡�
(?:
���� )
�����������������Ï�¡�(
���� )
����������ޏ�����������\���\���\¹\���²½���������µ���������������̏�¡�\\���\��\���\������µ������������������³������������̏�������돩Ώ��·���������¹��¡�¼�����������¡�
(?-xism:
���� )
��������¡��³������³������\���µµ�̏��½���½������¹½������ (?:
���� )
������³������\����������������¡��³������¹½���������������Ð���·��������¡�\���\���\¹\���²½���µ������������³������������������������ޏ�������������⏢����������������½���¾���»��� (x, i, s, m
) ������»������������¹�������������������������������������������������¹���������¹��¡����³������¼������������� \���\���\���\¹\��� (cloister) �����������������я��������¹��¡�
\���\���\���\¹\��ď�������¡�
(?
������ :
�����¡���ӏ��������½���������¾������½���¾���»��ҏ����ҏ����Џ������������������������¹���̏�¡�?
(\���\��\¹\���\���\���\������¼\���) �������¾���������������³������½���¾���»��ҏ��������ӏ��������²½��¡ߏ��µ��������¡�-
(\���\���\���\���) �������������������³������½���¾���»��ҏ��������ӏ��µ������²½��¡ߏ��µ���������������¹��¡��돫��ޏ�Џ�¡�¼���������������̏�����³���½���¾���»��ҏ����¡돪؏�����������³�����я�����\«\���\���
x |
... | ����؏����ҏ�����»��⏢����\³\���\���\������������µ�������������������������·��������·������������������ |
i |
... | ������������»���¾������»��⏢���Ң�������������·������������ (case-insensitive) |
s |
... | ����ޡ돫�¹��ԏ��������·��������·������ . ��������¡�²���¹��ԏ�������������������������������������������»��⏢����\���\���\������¹������ |
m |
... | �����ď��¹��ԏ��������·��������·��������¡�^ ������ $ ��������¡�³���¹��ԏ�����¹��ԏ���̏�����¹��ԏ����ӏ����ҏ��½���¹ |
������������������¡��ԏ���̏����쏢����µ��я���돢���ҏ����Џ�𡯏����ď�����¾���¹�����¡�����𡯏��Ð���³���������������Ï��������·���������¹��¡�
$str =~ /^(?i:foo)bar$/;Foobar ������ fOObar ������ FoObar ������������\���\���\������·���������¹���̏�¡�fooBar ������������\���\���\������·���������»�����я�¡�
(?i:foo)
��������������������¡�foo ������ 3 ������»��⏢���������� i
½���¾���»��ҏ��̏�������⏢�������������������������������¹������������¡���������»���¾������»��⏢������������������µ���������������»�����я��̏�¡�bar ������ 3 ������»��⏢����������½���¾���»��ҏ��̏����؏��«������������������������¡���������»���¾������»��⏢������������������µ���������������¹��¡����³������������µ��؏�������������������𡯏��������Ð��¡�ޏ��������������³�����Ï����������Ï����������������½��Џ��ޏ��������¹��¡�
$str =~ /^foo(?-i:bar)$/i;���³���������������Ï�������¡�½���¾���»��ҏ����Ң����½��������쏢������������⏢�������µ���»�����ď�����¾���¹�����������¡�\���\���\���\¹\��ď�������������⏢����¼����������������������������������¹��¡�
�����������������Ώ���������
(?:
���� )
������³������\��¡ߏ��������������������������·�����ď����������Ï�������¡��³������\���\���\���\¹\��ď�����¹½��������������������¡���������»²¾������̏�돫��������������������»�����я�¡���������������������������»²¾��������ҏ����̏����Џ��·�����ď�����¾���¹��������������ԏ��������������¹��¡�������������������¡���������»²¾��������ҏ�돫����������ď�����¾���¹�����¡�\���\���\���\¹\��ď�����¹½������������½��Џ��«������������\���\��ď��¼\��я�����³���������������³������������Ð�����������������������¹��¡�
�����������ď�����������¼����������������·��������¡�½���¾���»��ҏ���������������
:
(\³\���\���) �����ҏ����؏��ޏ����돢¡��½���������������³������\���\��ď��¼\��я�����½��Џ��«������������������³��������������ҏ��������������������·��������������¡��½������������\���\���\¹\��� (
���� )
��������������������̏����������Џ��������������¹��¡��³��������������������������������¡�����½��������쏢����½���¾���»��ҏ�����������������������½���¾��Џ��µ������������\���\���\¹\��ď�����\\���\��\���\������¹���������³������������½Ð���������������¹��¡�
$str =~ /^((?i:foo))bar$/; $str =~ /^((?i)foo)bar$/;¾���µ������¹��ԏ����������µ�����������¡��³������¾���¹�����¡�
i
½���¾���»��ҏ�����������������������½���¾��Џ��µ������������ foo ����\\���\��\���\������µ��������¡�»²¾���²������½���������������������������¹��¡������������������Ώ������������돪؏��·���������ޏ��������Ð���������ޏ�����������������������¡��³���������������Ï�����\�ޏ��¼\¹��¡�
my $perl = qr/Perl/; my $japh = 'just another perl hacker'; $japh =~ /^JUST ANOTHER $perl HACKER$/i;��돪�������������\���\���\���¼�돢����
i
½���¾���»��ҏ��̏����؏�����������������������������������¡�돫����«\���\���\������·���½�����Ï�����������»�ߏ�𡯏��������¹���̏�¡��³������������\���\���\���\¹\��ď��̏�����돩̏��������������������������·��������������¡�\���\���\������·���������»�����я�¡��������������������������������µ��������؏��������������»�ߏ��������������¹���̏�¡�돫��ޏ�Џ�¡�
my $perl = qr/Perl/; my $japh_pattern = "^JUST ANOTHER $perl HACKER\$"; print $japh_pattern;���³������������¼���¹��ԏ��¹������������
^JUST ANOTHER (?-xism:Perl) HACKER$������������������½Ð�������̏��������������������������¹��¡�
$perl
�����������������Ï����Џ�ď�ԏ�������¡�qr//
�ޏ��»»»��ҏ����������������������������������Џ��µ�����������ď�¡�\���\���\���\¹\��ď��̏����Џ��������������¹���̏�¡�����½��������쏢���� i
½���¾���»��ҏ��� -
(\���\���\���\¹) µ¹������������������������������µ������²½���µ������������������������������������¡�perl
���������ԏ���̏��������ޏ�����������������»���¾������»��⏢���Ң�������������·������\���\���\�������¹��ԏ�����������������������������������������\«\���\���\������������¹��¡�
my $perl = qr/Perl/i;���������������Ï�������¡�
qr//
�ޏ��»»»��ҏ�����������½���¾���»��ҏ����ҏ����̏����Џ��¹���������«��¡��������·��������������¡��½���������
my $perl = 'Perl';���������·��������¡�\���\���\���\¹\��ď����ҏ����̏����Џ��·�����������������������Ï��������¹���������Ð��¡��³������������\���\���\������µ���»���������³����������½Ð���������������¹��¡�
���³���������������Ï��������·��������¡µµ�̏��½���½������³��⏢�·�����������쏪���؏��¹��������������ҏ��¹���������³��������������������������������¡���돪�¾���������������������������\·\��\���\»���������������������������¹��¡�
���½��������������������¡�Let's enjoy regexp!!