you have multiple issues
here a demo with perl -dE0
DB<70> $r = " #1 #2 #3 #1 #3 #2 #3 #2" DB<72> $_=$r; s/(#\S+\s?)(.+$1)(?{say "$_ ($1) - ($2) pos:",pos($_)}) +/$2/g ;say "fin: $_" #1 #2 #3 #1 #3 #2 #3 #2 (#1 ) - (#2 #3 #1 #3 #2 #3 #2) pos:24 fin: #2 #3 #1 #3 #2 #3 #2
you can use this as template to experiment and debug with (?{...})
like using \K
DB<73> $_=$r; s/(#\S+\s?)\K(.+\1)(?{say "$_ ($1) - ($2) pos:",pos($_ +)})//g ;say #1 #2 #3 #1 #3 #2 #3 #2 (#1 ) - (#2 #3 #1 ) pos:13 + #1 #2 #3 #1 #3 #2 #3 #2 (#3 ) - (#2 #3 ) pos:22 + #1 #3 #2
like using (?=...)
DB<81> sub DEB {say "$_ ($1) - ($2) pos:",pos($_)} DB<82> $_=$r; s/(#\S+\s?)(?=(.+\1))(?{DEB})//g ;say "fin: $_" + #1 #2 #3 #1 #3 #2 #3 #2 (#1 ) - (#2 #3 #1 ) pos:4 + #1 #2 #3 #1 #3 #2 #3 #2 (#2 ) - (#3 #1 #3 #2 ) pos:7 + #1 #2 #3 #1 #3 #2 #3 #2 (#3 ) - (#1 #3 #2 #3 ) pos:10 + #1 #2 #3 #1 #3 #2 #3 #2 (#3 ) - (#2 #3 ) pos:16 + #1 #2 #3 #1 #3 #2 #3 #2 (#2) - ( #3 #2) pos:18 + fin: #1 #3 #2 + + + DB<83>
as you can see in the debug was \K not the best idea, but YMMV
you still need to fix the whitespace issue ...
... and IIRC there was a meta to keep the pos (\g or \G ?), please check perlre (I might misremember tho)
Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery
In reply to Re: Regex: remove non-adjacent duplicate hashtags
by LanX
in thread Regex: remove non-adjacent duplicate hashtags
by element22
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |