Regular Expression, end of line
- 
 I thought '$ would batch end-of-line? But searching for ‘:[^:]*$’ using Regular expression in below sample text shows that is matches across multiple lines. Is this correct behaviour? sample text: 
 ABC:DEF:GHI
 JKL
 MNO
 PQR:STU:VWXmatch after searching with above regexp : 
 :GHI
 JKL
 MNO
- 
 @Luuk-v said in Regular Expression, end of line: Is this correct behaviour? Unfortunately yes. When you use a negative class such as your [^:]you are saying anything but the : character, and that includes an end of line character.So once you regex finds the first : it then grabs other characters until it reaches the next :. The next part requires it to also have an end of line $, so it backs up until the last one found and stops there.You might want to read 
 https://npp-user-manual.org/docs/searching/#regular-expressions
 Look for “The complement of the characters” which states this. To avoid a multi line capture you also need to include in the negative class the end of line character.Terry 
- 
 Hello, @luuk-v, @terry-r and All, As @terry-r said, the simple negative class [^:]will match absolutely any character which is different from a colon symbol:, including possible EOL characters as\nand\r!So assuming your sample text : ABC:DEF:GHI JKL MNO PQR:STU:VWXWith your regex :[^:]*$:- 
First, the part :searches for a literal colon char
- 
Then, the part [^:]*for the greatest range, possibly null, of characters all different from a colon, including EOL chars
- 
But ONLY IF that range ends the current line, because of the $assertion
 This explains why your regex selects all the zone :GHI...........MNO.You could say “But, WHY it does not select the EOL chars of line MNOand, also, the stringPQRright before a colon char ?”. Note that I asked myself the same question ;-)- 
It cannot match the EOL chars of line MNOas, in that case the$assertion would not be verified. Indeed, after the EOL chars of lineMNO, there is not an end of line but the letterPof the next line !
- 
And it cannot match the string PQR, too, because the stringPQRis not immediately followed with an end of line !
 
 So, the correct regex to process should be :[^:\r\n]*$which selects only the strings:GHIand:VWX, ending their lines, which is, probably, the result that you expect to, don’t you ?Best regards, guy038 
- 
- 
 @guy038 said in Regular Expression, end of line: the correct regex to process should be :[^:\r\n]*$ @Luuk-v , Another regex which would also have produced the same answer is 
 :[^:]*?$
 Note the addition of the?behind the*. It turns a “greedy” operator into a “non-greedy” (minimalist) operator. So this would stop at the very first instance of theEOLcharacter(s).
 Also note that although you used the$character as an end of line marker outside of the negative class it does NOT work inside.Personally though my alternate regex works I would use @guy038 one as it is more readable and possibly also more defined! Terry 
- 
 Hi, @@luuk-v, @terry-r and All, @Terry-r said : Personally though my alternate regex works I would use @guy038 one as it is more readable and possibly also more defined! In the same way, I would say that @terry-r’s solution is clever too and is, finally, very easy to interpret ;-)) Indeed, this new syntax :[^:]*?$finds a colon char, followed with the shortest range of characters, possibly null, different from a colon, before an end of line !Cheers, guy038 


