About once a week our support group receives an email from a customer having problems with a regular expression hanging their system or not working like they had predicted. In almost every case the problem boils down to a mis-understanding of how and when to use :b (whitespace).
For users accustomed to using Perl and .NET regex syntax, the SlickEdit :b can be misleading. The :b construct is actually defined as [ \t]# (SE syntax) or [ \t]+ (Unix). It already has a "maximal match" built into it. This can cause a slow, grinding search if immediately paired with a * or +. Eg: :b* or :b+. In Perl or .NET syntax, if you want to search for something at the beginning of the line after some leading whitespace (a very frequent scenario when parsing source code), you'd typically write something like ^\s*(public|private|protected)
But you shouldn't place a * or + after a SlickEdit :b. At best, it may not work like you intended; at worst, it will bog down the search. There are two ways to handle this. First, if the whitespace is not optional, just use the :b as-is, with no qualifiers.
Second, if the whitepace is optional, use the character class construct directly, as below: ^[ \t]*(public|private|protected)
You would also want to use the character class approach if you needed to perform a minimal match of whitespace.
We may add a :s construct in a future version. But for now, take care when using :b.