Hello, @yasser-hhalil and @scott-sumner,
Sorry, I’m not very reactive, cause I’m on holidays, in North Brittany, with my two sisters and their husbands. What to say ? We make a cure of seafood : cockles, periwinkles, clams, lobsters, crabs and even octopus ! To sum up : the Paradise ;-))Since one week, weather was quite fine, here, but today it was raining. So, I’m back to N++ and the Community, for a while !!
Ah, @scott-sumner, very clever regex, found by Alin Purcaru, on Stackoverflow site !
To complete this topic, let’s suppose we want to find all lines with the five first-names : jack, james, jason, jules and Joe
Here are, below, four regexes, from the more restrictive behaviour to the less restrictive behaviour :
In regex A, rhe five first-names must be true words, in the exact lower case
In regex B, rhe five first-names must be true words, whatever their case
In regex C, rhe five first-names may be glued in bigger words, but with their exact lower case
In regex D, rhe five first-names may be glued in bigger words, whatever their case
So :
Regex A = (?-is)^(?=.*\bjack\b)(?=.*\bjames\b)(?=.*\bjason\b)(?=.*\bjules\b)(?=.*\bjoe\b).*
Regex B = (?i-s)^(?=.*\bjack\b)(?=.*\bjames\b)(?=.*\bjason\b)(?=.*\bjules\b)(?=.*\bjoe\b).*
Regex C = (?-is)^(?=.*jack)(?=.*james)(?=.*jason)(?=.*jules)(?=.*joe).*
Regex D = (?i-s)^(?=.*jack)(?=.*james)(?=.*jason)(?=.*jules)(?=.*joe).*
Notes :
As usual, the Regular expression search mode must be checked !
The initial modifiers force the search to be sensitive / insensitive ( -i / i ) to case, and also means that dot matches a single standard character only ( -s )
The ^ assertion, stands for the location beginning of line, where starts the test of the following features ( look-arounds )
Each form (?.*......) is a positive look-around, a condition which must be verified to get an overall match
If all conditions are true, the final regex is simply ^.*, so all contents of the line, from its beginning
Then, if you copy/paste the following lines, in a new tab :
01 james
02 jason
03 joe
04 james and jack
05 jason and jules
06 jack, jason and joe
07 peter, joe, jack, james and jules
08 peter, jack, james, jason, jules and joe
09 james, joe, jason, jules, jack and margaret
10 peter, jules, james, jack, jason, joe and margaret
11 joe, jules, jason, james and jack
12 jAMes
13 jASon
14 jOE
15 jAMes and JAck
16 jASon and JUles
17 jACk, jASOn and joe
18 pETer, JOE, jack, jaMEs and JUles
19 pETer, JACk, james, JAson, jULes and joe
20 jAMes, JOE, jason, jULes, jaCK and margaret
21 pETer, JULes, james, Jack, jASon, jOE and margaret
22 jOE, juLES, jason, jAMes and Jack
23 james
24 jason
25 joe
26 james and jack
27 jason and jules
28 jack, jason and joe
29 peter, 12joe34, jack, 56james78 and jules
30 peter, 12jack34, james, 56jason78, jules and joe
31 james, 12joe34, jason, 56jules78, jack and margaret
32 peter, 12jules34, james, 56jack78, jason, joe and margaret
33 joe, 12jules34, jason, 56james78 and jack
34 jAMes
35 jASon
36 jOE
37 jAMes and 12jack34
38 jASon and jules
39 jACk, 12jASOn34 and joe
40 pETer, 12JOE34, jack, 56jaMEs78 and JUles
41 pETer, 12JACk34, james, 56JAson78, jULes and 90joe12
42 jAMes, 12JOE34, jason, 56jULes78, jaCK and margaret
43 pETer, 12JULes34, james, 56Jack78, jASon, 90joe12 and margaret
44 jOE, 12juLES34, jason, 56jAMes78 and 90Jack12
You’ll easily notice that :
Regex A matches lines from 8 to 11
Regex B matches lines from 8 to 11 and from 19 to 22
Regex C matches lines from 8 to 11 and from 30 to 33
Regex D matches lines from 8 to 11, from 19 to 22, from 30 to 33 and from 41 to 44
Now, from an already saved file, once you’ve got the results, in the Find Result panel, after clicking on the Find All in Current Document button, using one of regexes, above, you may, also, search for each individual first-name :
Right-click in the Find result panel
Select the Find in this finder… option
Now, in the new Find in finder dialog :
Type a first-name, for instance jack, in the Find what: zone
Check the Search only on found lines option
Uncheck the two options Match whole word only and Match case
Select, if necessary, the Normal search mode
Click on the Find all button
=> A new Find resul tab is created and displays any occurrence of the string jack, found in the lines of the Find result panel, only !
Repeat these steps, changing for an
other first-name, to get 5
Find resul tabs, all using the
Line Filter Mode of search !
IMPORTANT : If the Find result panel contains results, from a non-saved file ( with new # name ), the context option Find in this filder… does NOT seem to work ! I’ll add a post to @don-ho, to that purpose, very soon !
Best Regards,
guy038