Forums > MaxMSP

Calling all regexp experts!

March 2, 2012 | 8:56 pm

OK, you probably don’t even need to be an expert – just better than me!

I want to detect if an expression includes "Keyboard 2" (without the quotes) – the K can be capitalized or not. "Keyboard 2" may appear at the beginning, middle or end of my expression.

How to??


March 2, 2012 | 9:03 pm

rename your post as follows:
"calling all Luke Halls"

:)


March 2, 2012 | 9:21 pm

Yeah, where are you Luke!

So I’ve tried [regexp "K|keyboard 2"] , and that gets me a "keyboard 2" out the substring outlet when I give it an expression that contains "keyboard 2" – so far so good. But then it inappropriately matches a "K" substring for any expression that includes a K….


March 2, 2012 | 9:24 pm

you want [regexp "[Kk]eyboard 2"]

"K|keyboard 2" – will do a or’ed match of either K and keyboard 2

"[Kk]eyboard 2" – matches a character class (group of characters between []), then the rest of the search (eyboard 2)


March 2, 2012 | 9:34 pm

That’s it, thanks big_pause!!


March 3, 2012 | 5:15 pm

Oh man! My Max5 license is still on my old laptop and I can’t afford Max6 on this machine yet so I haven’t been around much. Sorry if you feel I’ve been neglecting you Dan! ;)


March 3, 2012 | 8:42 pm

No worries Luke, just messing with ya!


March 3, 2012 | 10:24 pm

i saved every successful use of regexp + i collect these examples from any regexp thread appearing here since i don’t know, a year or two. all in a big patch. this is already helping me so much when i’m stucked again with regexp. because in most cases one example comes at least close to what i want to do. this might be a good tool release one day after they have been categorised a little bit.
O.


March 3, 2012 | 10:35 pm

There are many online (general) regex test pages out there, a good one is

http://gskinner.com/RegExr/

This has many examples to go through.

Whilst not specific to max, its handy non the less.

Also, you could dive into the Perl regex tutorial, which would help quite a bit

http://perldoc.perl.org/perlretut.html

There’ll be more in there than is possible with the max regex object, but it’s all good stuff


March 3, 2012 | 10:53 pm

yes gskinner is worth a bookmark.


March 3, 2012 | 11:22 pm

Wow, gskinner is very nice, thanks for that tip big_pause!


March 25, 2012 | 9:23 pm

OK – follow up to my original question in this thread: now I want to detect when there is a "Keyboard" and a "2" in a symbol. But unlike my previous question, the 2 may not necessarily appear right after the Keyboard; it might appear before, or several words after the Keyboard. How to do with regexp?


March 25, 2012 | 10:07 pm

Try this for size.

[regexp "[Kk]eyboard.*2|2.*[Kk]eyboard"]


March 26, 2012 | 3:01 pm

Thank you again! So that *almost* works – it doesn’t however match something like "Trackpad/Keyboard 2", which it should. So I changed your suggestion to [regexp .*[Kk]eyboard.*2|2.*[Kk]eyboard] and it seems to work…

The thing I wasn’t familiar with is the "." – does that mean any character or space? I know that the following "*" means "zero or more occurrences of the preceding character."


March 26, 2012 | 5:49 pm

The .dot. means anything but a line break, which you shouldn’t have to worry about in this case so your example should work just fine.


March 26, 2012 | 6:12 pm

Cool, thanks Luke.


March 26, 2012 | 7:32 pm

you shouldn’t need that .* that you’ve added

see this for eg

– Pasted Max Patch, click to expand. –

Viewing 17 posts - 1 through 17 (of 17 total)