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.
Logged In: YES
user_id=1486645
Originator: NO
Sill valid for jEdit 4.3pre9.
SUN JRE 1.5.0_11
WinXP SP2
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
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
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.
beanshell to run on itself
Closing...