Negative lookbehind regular expression not working on Notepad++
-
@PeterJones I have understood what @guy038 is trying to convey (and I have been using it). A template would be useful and this is an example:
(xyz)(*SKIP)(*F)|(z)
is like a negative look behind which skips finding anyz
if it is preceded byy
orx
(the order of thex
andy
need not be the same) but finds all other occurrences ofz
- post no.16 shows how he used it for the block I typed for testing at the top of this threadI would prefer a template like this:-
(String1|String2)(MAIN Regex Search)(*SKIP)(*F)|(MAIN Regex Search) | <------------- This I do NOT want ------------><- This I DO want ->
-
@PeterJones We can add another line below the above RegEx explanation like this (to explain it better):-
<------------- What I want to SKIP ------------><- What I want to MATCH ->
-
@PeterJones The wonderful thing about the (*SKIP)(*F) method is that it can be used for negative look aheads also like this:-
(MAIN Regex Search)(String1|String2)(*SKIP)(*F)|(MAIN Regex Search) | <------------- What I want to SKIP ------------><-What I want to MATCH->
-
@dr-ramaanand said in Negative lookbehind regular expression not working on Notepad++:
The wonderful thing about the (*SKIP)(*F) method is that it can be used for negative look aheads also like this
But pointless, because lookaheads (negative or positive) can have variable width, so if you want a lookahead, just use a lookahead.
-
@PeterJones The (*SKIP)(*F) method can be of variable width but it can be used only for negative look aheads and negative look behinds
-
Peter’s last point (which you missed) was that lookaheads are best done with native regex syntax, because it is more obvious that way.
And he probably would have confused you less if he had left out
(negative or positive)
from his sentence; doing that doesn’t change the meaning. -
Hello, @peterjones and All,
OK. I going to prepare a blog post regarding the
(*SKIP)(*F)
feature !However, be patient because I’ll try, first :
-
To find out some other pertinent examples from various regex sites
-
To propose alternatives to the
(*SKIP)(*F)
syntax when it’s possible !
BR
guy038
-
-
@guy038 please create the blog to show how to use the
(*SKIP)(*FAIL)
regular expression, not an alternative to it. @PeterJones may be able to create an alternative to it. If @PeterJones wants to still use his method for what I have typed as my block for testing, he can do it in 2 parts; first using the regular expression,(<span\b[^>]*?color\s*:\s*black[^>]*>\s*|<p\b[^>]*?color\s*:\s*black[^>]*>\s*<span\b[^>]*>\s*)\K(<code\s*style="background-color:\s*transparent;">)
in the find field and a unique string (say for example, a unique name like, “Czeslawski”) in the replace field, he can replace the<code\s*style="background-color:\s*transparent;">
with that unique string. Then he can do what is needed to the other strings of<code\s*style="background-color:\s*transparent;">
and then again replace the unique string (“Czeslawski” in this case) with<code\s*style="background-color:\s*transparent;">
. If it is something simple, this example should be sufficient: https://stackoverflow.com/questions/17286667/regular-expression-using-negative-lookbehind-not-working-in-notepad -
Hello, @dr-ramaanand,
When I said :
To propose alternatives to the
(*SKIP)(*F)
syntax when it’s possible !I’m not talking about a work-around, using a several-steps regex, but, indeed, other direct regexes, without the
(*SKIP)(*F)
syntax, which are, sometimes, even shorter !You’ll understand what I mean., sooner !
Best Regards,
guy038
-
@guy038 I will understand it only after you post that regular expression (RegEx) here