fork download
  1. my @lines = <main::DATA>;
  2.  
  3. foreach my $line (@lines) {
  4. chomp($line);
  5. print "[" . (($line =~ m/(?=.*?(?<!@ )(\b\w+\b)).*\(@.*\1.*\)/)? "yes" : "no") . "]\t$1\t$line\n";
  6. }
  7.  
  8. __DATA__
  9. abc (@ abc )
  10. abc (@ (& abc ) )
  11. abc (& def (@ abc ) )
  12. (& (& abc def ) (@ abc ) )
  13. (& def (& abc ) (@ abc ) )
  14. abc
  15. (@ abc )
  16. abc (@ def )
  17. abc (& abc)
  18. (@ abc ) abc
  19. (@ abc ) (@ abc )
Success #stdin #stdout 0s 4596KB
stdin
Standard input is empty
stdout
[yes]	abc	abc (@ abc )
[yes]	abc	abc (@ (& abc ) )
[yes]	abc	abc (& def (@ abc ) )
[yes]	abc	(& (& abc def ) (@ abc ) )
[yes]	abc	(& def (& abc ) (@ abc ) )
[no]	abc	abc
[no]	abc	(@ abc )
[no]	abc	abc (@ def )
[no]	abc	abc (& abc)
[yes]	abc	(@ abc ) abc
[no]	abc	(@ abc ) (@ abc )