Difficulties using positive/negative look ahead and look behind tokens in GREP Find and Replace dialogue.
I have a body of text which is a list of line break delimited email addresses. There are some duplicates in the list and my goal is to create a list of the duplicate emails (once each) and remove all the non-duplicate emails. The emails were sorted alphabetically prior to pasting into InDesign so all duplicates are separated only by a line break. I know I've achieved the desired whittling down to duplicates only in the past but have lost my formulas.
I can select double entries of emails in my text, remove second occurrence and mark them in some way with a very simple Find token:
However when I attempt use a negative look ahead for matching a email address to eliminate non-duplicate emails from the list anything I try doesn't work. For instance using
Picks up both this duplicate and non-duplicate emails. I suspect this may have something to do with greedy operators but I can't negotiate a GREP token that works to negatively look ahead for the email
In fact the only look ahead/behind I can get to work even slightly is positive look ahead. For eg. this is attempt to do negative look ahead to match a line break delimited duplicate email gives a bit of a clue. Eg:
Find: (.+@)(?!.+\r\1) highlights the first part (up to and including "@") of all non-duplicate emails and on the first of the "firstname.lastname@example.org" texts it selects as highlighted below (in red font-face):
I feel like I'm close, I can negative look ahead for "gmail.com" for example with FIND: (.+@)(?!gmail).+ which selects all lines except those with a gmail.com domain.
But you are very close!
This small adjustment to your first GREP will select unique addresses, or only the first of a duplicate:
where the ^ forces that the match should start at the first character of each line (yours starts from the second character if the next line is a dupe, and so it's no longer "a dupe"). If I'm correct this same fix will also work for your second attempt.
Hey, belated thank you!