Revision 24042 made changes in PatternSearchMatcher.java to strip out non-capturing regexps in certain conditions, but the code doesn't work if the pattern searched for includes escaped literal parentheses.
For instance, this regexp
(?: \([\$\d\.]+\))? \(..\) *$
doesn't work in 5.3 (just search a blank buffer using it) because the method removeNonCapturingGroups() doesn't take into account the escaped "\)"
Diff:
Fixed in revision 24138.
The initial problem is fixed, thanks -- but there's another issue with removeNonCapturingGroups().
To replicate a StringIndexOutOfBoundsException bug:
Create a buffer with this line in it:
search for this regular expression:
and attempt to replace it with this substitution:
and you'll trigger the exception.
[This is using the daily builds of 5.3.1]
Thanks for testing this, I've added some bounds checking in revision 24166, which appears to fix the problem, that is, unless you find some other regex that breaks it.