http://qs321.pair.com?node_id=11122013


in reply to regex search for words with one digit

The exclusion trick: \w and [^\W] match exactly the same thing, so to match a \w but not a \d, just use [^\W\d]

#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11122003 use warnings; my $text = "John P5ete Andrew Richard58 Nic4k Le7on5"; my @names = $text =~ /\b[^\W\d]*\d[^\W\d]*\b/g; print "@names\n";

Outputs:

P5ete Nic4k

Replies are listed 'Best First'.
Re^2: regex search for words with one digit
by AnomalousMonk (Archbishop) on Sep 21, 2020 at 18:25 UTC
    /\b[^\W\d]*\d[^\W\d]*\b/

    Note that this matches the name '1'.


    Give a man a fish:  <%-{-{-{-<

      Rereading the spec, the name '1' is valid. :)

      If the spec is changed, I'll change my regex, but it will cost extra...