If there's some particular insight as to why it would be worse in this particular case, I'd be delighted to be enlightened. As it is, in my ignorance, I like the + possessive because I think it looks more readable than the (?>) alternative, and is likely a better mnemonic, since I have to keep looking at the man page to remember which odd character goes into (?>) .
I don't know enough about the Java half of this question to be strongly opinionated but I can offer some thoughts.
The construct is mostly good for optimizing the failure case of a specific subset of patterns. Consequently, it is infrequently used in Perl and presumably, that's the case in Java as well. The symbol "+", however, is frequently used for a very common case. Overloading its meaning could be confusing.1 It might be easily missed or look like a typo, particularly to someone unfamiliar with it.
The (?>) construct allows grouping that Java's doesn't seem to handle. I'm guessing2 that (?>a*b*) is equivalent to Java's a*+b*+. If so, and (?>a+b?c{3,7}d*e+) looks like a++b?+c{3,7}+d*+e++ in Java, then Java's representation starts to get long and messy. What about (?>a*(b|c)d*)? Can that be expressed in Java at all? Or is Java restricted to modifying quantifiers?
1. It might be a real + for obfuscation though. :-)-sauoq "My two cents aren't worth a dime.";
In reply to Re(3): Possessive Quantifiers
by sauoq
in thread Possessive Quantifiers
by Ferret
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |