Skip to content

Instantly share code, notes, and snippets.

@Minoru
Created January 26, 2014 19:12
Show Gist options
  • Save Minoru/8637693 to your computer and use it in GitHub Desktop.
Save Minoru/8637693 to your computer and use it in GitHub Desktop.
Solution to Mayoi Hachikuji's problem of matching something like "wtf (.+) going (.+) (.+)" in a way so that \1 ≠ \2 ≠ \3
echo 'wtf is going is is\nwtf is going is on\nwtf is going is guys\nwtf is going on is\nwtf is going on on\nwtf is going on guys\nwtf is going guys is\nwtf is going guys on\nwtf is going guys guys\nwtf on going is is\nwtf on going is on\nwtf on going is guys\nwtf on going on is\nwtf on going on on\nwtf on going on guys\nwtf on going guys is\nwtf on going guys on\nwtf on going guys guys\nwtf guys going is is\nwtf guys going is on\nwtf guys going is guys\nwtf guys going on is\nwtf guys going on on\nwtf guys going on guys\nwtf guys going guys is\nwtf guys going guys on\nwtf guys going guys guys' | \
perl -ne '$i++; if ( $_ =~ /^wtf (\w+) going (?!.*\1.*)(\w+) (?!.*\2.*)(\w+)$/ ) { print $i, ": ", $1, "--", $2, "--", $3, "\n"; }'
6: is--on--guys
8: is--guys--on
12: on--is--guys
16: on--guys--is
20: guys--is--on
22: guys--on--is
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment