Prolog and Regexp

From: Djamé Seddah (djame_at_jamais-de-la-vie.com)
Date: 10/20/04


Date: Wed, 20 Oct 2004 15:34:50 +0200

Hello,
I've found a paper which deals with treatments of regular expression in
prolog here
(http://www.cs.sfu.ca/people/Faculty/cameron/Teaching/384/99-3/regexp-plg.html

and whereas the provided exemple works for short amout of data
it didn't for large chunk of text...
In fact, i'm feaching webpage and I put them into a string, I just have
to fetch some pattern, no need to write a true parser with the ppp...
Of course before I've tried with unification pattern (transforming
string to atom and using atom_concat), I tried with substring search and
the result was "bof", so I digged to find this package
and I'm not happy whith the result....

look at this exemple

%%%%%% copy the entire predicate until its end
test_def(chien,'<TITLE> Dictionnaire
Fran&ccedil;ais-Anglais</TITLE>\n<META HTTP-EQUIV="Expires"
CONTENT="\nTue Oct 19 14:30:04 WET DST 2004\n">\n<BODY BGCOLOR=#8FAAAA
BACKGROUND = "/textures/paper.gif">\n<HTML>\nBienvenue &agrave; <b>
</b><DT>\nutilisant <b>SWI-Prolog (http://www.swi-prolog.org)
</b><DT>\n<H3>\n19 Octobre 2004\n14:30:13\n<br>\nRésultat de la
recherche pour le mot : \nchien\n<DT> </H3> \n<table border=0><tr><th
align=left bgcolor=white>\n<b><pre>\n<font color=green>\nchien = dog
(nom masculin)\n<hr></font><font color=red>\nchien = dog (n/a)\nchien =
dog (nom masculin)\nchien = dog (n/a)\nchien = dog (n/a)\nchien = dot
(n/a)\nmaison de chien = doghouse (n/a)\nchien = cat (n/a)\nchien = dog
(nom masculin)\nchien = dog (nom masculin)\nchien = dog (n/a)\nchien =
dog (n/a)\nchien = dog (nom masculin)\nchien = god (nom masculin)\nchien
= dog (nom masculin)\nchien = chien (nom féminin)\nchien = chien
(verbe)\ngod = chien (verbe)\nchien = dog (n/a)\nCHIEN = DOG
(n/a)\nCHIEN = HOON (nom masculin)\nchien = cat (n/a)\nchien = crote
(n/a)\nchien = dog (nom masculin)\nchien = dog (n/a)\nchien = dog
(n/a)\nchien = dog (n/a)\nchien = chien (nom masculin)\nchien = chien
(nom masculin)\nchien = cat (nom masculin)\nchien = dog (nom
masculin)\nchien = dog (nom masculin)\nchien = dog (n/a)\nchien = drop
(n/a)\npanier à chien = basket (n/a)\nchien = dog (nom masculin)\nun
chien = a cabot-cat (préposition, autre)\nchien = crawler (n/a)\nun
chien = the dog (n/a)\nchien = dog (nom masculin)\nthug life = vie de
chien (n/a)\nCHIEN = DOG (n/a)\nchien = dog (n/a)\nchien = dog
(n/a)\nchien = dog (n/a)\nchien = yes (n/a)\nchien = dog (nom
masculin)\nchien = dog (nom masculin)\nchien = dog (nom masculin)\nchien
= dog (nom masculin)\nchien = dog (nom masculin)\nchien = dog
(n/a)\nchien = dog (nom masculin)\nchien = dog (n/a)\nChien = Dog (nom
masculin)\nchien = dog (nom masculin)\nCHIEN = palps (n/a)\nchien = dog
(n/a)\nle chien = dog (n/a)\nCHIEN = DOG (n/a)\n<hr> <br>* TEXTE EN
ROUGE * = </font> trouvé dans les propositions récentes (found in recent
submissions) <font color=red>CAN BE
WRONG!</font>\n</pre></b></font></table> <HR>\n<IMG
SRC="/cgi-bin/count2_a?traduc">\n<HR>\nSi cette recherche n`a pas
abouti, ou si le r&eacute;sultat ne vous convient pas.\n<H3>Maintenant
sur ce serveur : <A HREF="/traduc.html">\n Proposez votre traduction!
</A></H3>\n<HR><center>\n[Recherche| <a
href="#Links">Liens|</a>\nProposition|\n<a
href="/Dico/GB.html">Guest Book|</a>\n<a
href=/cgi-bin/quizz>Quizz</a>\n]<br> </center>\n</HTML>\n').
%%%% end of predicate

so it associates a huge string to 'chien'

then copy and cut the programms provided by the link below
http://www.cs.sfu.ca/people/Faculty/cameron/Teaching/384/99-3/regexp-plg.html

and then do

test_def(chien,Atom),tokenize(".+chien=(.+).+",L,R).
In theory, we should have all the token in the list L but in fact no.
I can't figure out why and I don't want to call some perl script
embedded into the system predicate.

Hope someone could help

Djamé



Relevant Pages

  • Re: Subform Filter
    ... that the filter tries to match (except for the Title field, ... Dim strWhere As String ... Dim strError As String ... 'Create Predicate ...
    (microsoft.public.access.formscoding)
  • Re: Subform Filter
    ... Dim strWhere As String ... Dim strError As String ... 'Create Predicate ... 'Add it to the predicate - exact match ...
    (microsoft.public.access.formscoding)
  • Help, Runtime error 2001, You Canceled the Previous Operation
    ... Dim strWhere As String ... 'Create Predicate ... Me.[Browse All RCA Events].Form.Filter = strWhere ...
    (microsoft.public.access.macros)
  • Re: Change filter source from table to query
    ... Your code builds up a filter string (strWhere), and assigns it to the Filter of the form. ... If the user now wants to print the same results, you can use that filter string as the WhereCondition for OpenReport. ... 'Create Predicate ... 'If Employee Number (tblEmployeeProjectDetails) ...
    (microsoft.public.access.formscoding)
  • Re: run time error 3075
    ... Dim strWhere As String ... Dim strError As String ... ' Add it to the predicate - exact ... 'Add it to the predicate - exact match ...
    (microsoft.public.access.modulesdaovba)