[cl-ppcre-devel] Prioritising matches by the order of the alternatives.

1 view
Skip to first unread message

David Johnson-Davies

unread,
Jun 23, 2010, 10:50:04 AM6/23/10
to cl-ppcr...@common-lisp.net
Is it possible to prioritise matches by the order of the alternatives?

This demonstrates what I want to do:

(cl-ppcre::scan-to-strings "super(man|dog|girl|woman|boy)" "this is the story of superboy and superman.")

This matches "superboy" because it matches the first "super" and then tries each of the ORs until it finds "boy".

What I want it to do is match according to the priority I've specified in the OR list. For example, if it finds a "superman" anywhere in the target-string it should match that before trying "superdog" etc.

I know I could do this with a bit of Lisp code, but if it's possible to keep it all in the regexp I'd prefer to do that.

Thanks,
David Johnson-Davies
_______________________________________________
cl-ppcre-devel site list
cl-ppcr...@common-lisp.net
http://common-lisp.net/mailman/listinfo/cl-ppcre-devel

Edi Weitz

unread,
Jun 23, 2010, 11:18:18 AM6/23/10
to General interest list about cl-ppcre and cl-unicode
Possible, but probably extremely inefficient. Here's an idea:

CL-USER 3 > (ppcre:scan-to-strings "dog|man" "a man and his dog")
"man"
#()

CL-USER 4 > (ppcre:scan-to-strings "dog|man(?!.*dog)" "a man and his dog")
"dog"
#()

Edi.

Reply all
Reply to author
Forward
0 new messages