Thanks for your reply to my message. Underquoted, although it doesn't affect the particular issue you raised.
Yes; I whittled the example from the more complex version I'm actually using. After poking around a bit with quoting, I assumed it wasn't causing the problem (always a risky assumption to make), and used only the quoting necessary to make this example work. the real problem is that m4 (unfortunately) does not understand [[:alpha:]] yet, and is instead treating your regex as exactly one byte from [:[ahlp], followed by any number (including 0) of a literal ]*; 'a' matches that regex, but 'b' does not. Alas, yes. I was lulled into a false sense of security when I figured out that + worked. I naively assumed that posix character classes would work too.
