the positive look ahead expression (?= ) seems to be
working only in the end of the expression. For ex. if
an expression for some words inside tags is needed we
expect this to do the work:
(?= <([^>]*))thewordIsearch(?=([^<]*)>)
it doesn't work, but of course if I remove look
ahead: "(<([^>]*))thewordIsearch(?=([^<]*)>)" it
works, but it doesnt hide the text before the word I
search for.
Submitted | velniava - 2005-12-05 - 15:18:12z | Assigned | nobody |
---|---|---|---|
Priority | 5 | Category | search and replace |
Status | Open | Group | minor bug |
Resolution | None | Visibility | No |
2007-02-14 - 21:25:57z rschwenn |
Logged In: YES user_id=1486645 Originator: NO Sill valid for jEdit 4.3pre9. SUN JRE 1.5.0_11 WinXP SP2 |
---|---|
2010-03-27 - 18:37:04z kerik-sf |
I'm by no mean a regexp expert (far from it), but shouldn't one use a positive look-behind
? At first, I tried (?<=<([^>]*))bonjour(?=([^<]*)>) but got a java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 11 (?<=<([^>]*))bonjour(?=([^<]*)>) So I added an explicit bound and found that (?<=<([^>]{0,100}?))bonjour(?=([^<]*)>) works |
2010-03-27 - 18:51:34z kerik-sf |
my suggestion doesn't work on inputs like this : "<lebonjour>" while it should ! It's a bug in the regex engine, see : http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6284152 |
2010-03-27 - 18:57:30z kerik-sf |
the workaround suggested in the sun bug report works : "bonjour(?<=<([^>]{0,100}bonjour))(?=([^<]*)>)". Attached is a beanshell to demonstrate the problem with java.util.regex : open it and run it. The second alternative works, but the first one doesn't. |
2010-03-27 - 18:57:36z kerik-sf |
test_positive_lookahead.bsh beanshell to run on itself |
---|