Richard Stallman <[EMAIL PROTECTED]> writes: > > Can't you tell that more easily by seeing if match-beginning returns > nil? > > Which match-beginning? > > One for a subexpression inside the alternative you're trying to test for. > > After (string-match "\\(a\\)\\|\\(b\\)\\|\\(c\\)" input) > > I can just consult (length (match-data)) for distinguishing between > all three alternatives. > > You could, but you'd have to compare the value of that against > various constants, which would be ugly.
Uh, no. In the applications I am using, the expression for the string match is created programmatically from a large list of strings, and the result is used for indexing into corresponding data structures. > I think this code is cleaner: > > (cond ((match-beginning 1) > ...) > ((match-beginning 2) > ...) > ((match-beginning 3) > ...) Certainly cleaner than the straw man you are trying to put up, no question about that. And I have been using this idiom a number of times for other code. In the application that I had in mind, however, no different code paths were taken, and so this boiled down to (while (not (match-beginning index)) (setq index (1+ index))) (do-something-about index) -- David Kastrup, Kriemhildstr. 15, 44793 Bochum _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel