����ɽ����������뤿��Υ롼���� in C
Copyright (C) 1996,1998 Taiji Yamada <[email protected]>
[���]
����ɽ����������뤿��Υ롼����ˤ� Solaris �ʤɤǤ� regcmp(3G), regexpr(3G)��GNU
�Ǥ� regex �� rx �ʤɤ�����ΤǼ������Ѱդ���ɬ�����⤢�ޤ�ʤ��ΤǤ�������ݲ���������������ͳ����Ϥ겿����и��Ȥ������Ȥǡ���ʬ�Ǻ�äƤߤޤ��������������������ݲ���ǰƬ�˺������ƤϤ����ΤǤ������ޤ���ݲ���������ɽ���롼����ˤϤʤäƤޤ��󤷡��������ȤʤɤΤ����Ĥ����פʵ�ǽ����������Ƥ��ޤ��󡣤ޤ�����Ψ�ΰ����Ȥ�����¿������Ȼפ��ޤ������Ȥꤢ�����ΥС������Ȥ��Ƹ������Ƥ��ޤ���
���Υץ������ϡ��������ܵ������ٶ��Τ����ʸ�� [1] ��١����˺��Ϥ᤿��Τǡ�����Ū�ˤ�ʸ��
[1] �Υ���ץ�ץ������Ȼ��Ȥߤ�Ʊ���ǡ�����ˡ�Ǥ�դΰ�ʸ����.�פ�ʸ�����饹��[a-z]�ס������֤������?�ס�{n,m}�ס���Ƭ�����������^,$�ס���\t,\n�פʤɤ�����ʸ������\s,\w�פʤɤ�ʸ�����饹����\cG,\xff,\377,\0�פʤɤ�ʸ�������ɻ���ʤɤ��ĥ������ΤǤ���
Perl ����٤ƽ���ʤ����Ȥϡ���\digit�פˤ��������Ȥ䡢��\b,\B�פΥ��󥫡���GNU
regex ����٤ƽ���ʤ����Ȥϡ���\<,\>�פΥ��󥫡���POSIX ����٤ƽ���ʤ����Ȥϡ�[:digit:]�פʤɤ�ʸ�����饹�ʤɤǤ��������ϡ��ޤ��꤬���������ˤǤ��������Ĥ��Ǥ�����ñ�쳫�ϰ��֤ʤɤΥ��󥫡���������Ȥ�ɤΤ褦�˼�������Х٥��Ȥ����ΤȤ����ͤ���Ǥ���
�ޤ�������ɽ���ι�ʸ��§�Υ������ޥ����⤢�����ٹ�θ����Ƥ���Τǡ�AWK,
GREP �ߴ��ʤɤ˥������ޥ������뤳�Ȥ��ưפǡ�����ˡ��ǥե���Ȥι�ʸ��§���ѹ��Τ���Υޥ���(REGE_SYNTAX_AWK,
REGE_SYNTAX_GREP
�ʤ�)���Ѱդ��Ƥ���ޤ����������������Ĥ��Υ���ƥ�����ʵ�ư�Ǵ����ʸߴ��ˤϤʤäƤ��ޤ���
�����ơ� ��ݲ��б��ˤĤ��Ƥϡ�����Ū�� wchar �� wstring �ؤ��ִ��������Ū��ñ�˽����褦�˹�θ�����Ĥ��Ǥ�����POSIX
������ɽ���ι�ݲ��ˤĤ��Ƥ������Ĵ�٤��櫓�ǤϤʤ��Τǡ������ܺ٤������Ǥ���
���ޤΤȤ����ѥ�����ޥå��󥰥롼���󤷤��Ѱդ��Ƥޤ���
�Ȥ���
����Ū�˰ʲ��Τ褦�ˤ��뤳�Ȥˤ�ꡢ����ɽ���ˤ��ѥ�����ޥå��󥰤�����ޤ���
char *from, *to, *p, buf[256], pattern[] = "^$"; /* pattern �ˤ�����ɽ�������
*/
rege_t *rege;
rege = rege_compile(pattern, 0, NULL); /* ����ɽ���Υ���ѥ��� */
p = buf; /* buf �ϥѥ�����ޥå��󥰤�Ԥ��о�ʸ���� */
rege_match(rege, p, strlen(p), &from, &to);
while (from != NULL) {
/* �ޥå������ϰϤ������� *from, *to ����������� */
;
if (p==from && p==to) /* �ʥ�ʸ�������Ƭ�ǥޥå��������Τ������
*/
if (*(to+1) == '\0')
break;
else
to++;
p = to;
rege_next_match(rege, p, strlen(p), &from, &to);
}
rege_free(rege);
�ޤ���rege_t *rege_compile(char *pattern, rege_syntax_t syntax, char
*trans_table) �� syntax �ˡ��㤨�� REGE_SYNTAX_AWK
����ꤹ��� AWK �ߴ��ˤʤꡢ��\{n,m\}�פ������֤�����ˤʤ�ޤ���
trans_table �ˤϥ����� 256 ��ʸ�������ɤ��Ѵ�ɽ����ꤹ�뤳�Ȥ�����ޤ����㤨�С���ʸ���Ⱦ�ʸ����̵�뤹��ʤ顢
static char icase_table[256];
int i;
for (i=0; i<256; i++)
icase_table[i] = isupper(i)?tolower(i):i;
rege = rege_compile(pattern, 0, icase_table);
�Ȥ��ޤ�����rege_compile �μ¹Ի��ˤ� trans_table
�ϻ��Ѥ��ʤ��Τǡ� rege_match ��ľ���� rege_t �Υ���
rege->trans_table
�˥ݥ��󥿤���ꤷ�Ƥ�Ʊ�����̤�����ޤ���
rege->trans_table = icase_table;
rege_match(rege, p, strlen(p), &from, &to);
��äȤ⡢��ʸ���Ⱦ�ʸ����̵�뤹������ʤ� syntax �� REGE_IGNORE_CASE
��ޥ������������Ʊ�����̤����ޤ���
rege = rege_compile(pattern, REGE_SYNTAX_POSIX_EXTENDED|REGE_IGNORE_CASE,
NULL);
����¾�ξܺ٤ˤĤ��Ƥϡ�����ץ�ץ������ lgrep.c ��إå��ե����롢�������ե�����򸫤Ʋ�������
�ޤ���ź�դ� lgrep.pl �� lgrep.c �Υƥ��ȤΤ���˺���������Τ�
Perl �ˤ�� lgrep �Ǥ��� lgrep �� grep �Ȱ�ä�
less
�Τ褦������ɽ���˥ޥå������ϰϤ�ɽ�����ޤ���
����ʸ��
-
��ƣ ����, ``C �ץ�����ޤΤ���Υ��르�ꥺ��ȥǡ�����¤ Part 2,'' ���եȥХ�,
pp. 41-74, 1993.
���Υ����Ȥ˴ؤ��뤴�ո�����˾�� [email protected]
�ޤǤ��ꤤ���ޤ���
Copyright (C) 1998 Taiji Yamada, All rights reserved.