CGI/Perl Guide | Learning Center | Forums | Advertise | Login
Site Search: in

  Main Index MAIN
INDEX
Search Posts SEARCH
POSTS
Who's Online WHO'S
ONLINE
Log in LOG
IN

Home: Perl Programming Help: Regular Expressions:
Suggest any Regular Expression, Please

 



tallamohan
New User

Jul 20, 2012, 12:48 AM

Post #1 of 2 (4673 views)
Suggest any Regular Expression, Please Can't Post

$val1="abcd";
$val2="abcdxyz";

comparing both the strings and returning uncommon
string.

ex: 'xyz' is uncommon string


Chris Charley
User

Jul 21, 2012, 6:13 PM

Post #2 of 2 (4588 views)
Re: [tallamohan] Suggest any Regular Expression, Please [In reply to] Can't Post

From perlfaq4, How do I compute the difference of two arrays? How do I compute the intersection of two arrays?. This doesn't answer your question directly, but it may give you some idea.


Code
Use a hash. Here's code to do both and more. It assumes that each element is unique in a given array: 

@union = @intersection = @difference = ();
%count = ();
foreach $element (@array1, @array2) { $count{$element}++ }
foreach $element (keys %count) {
push @union, $element;
push @{ $count{$element} > 1 ? \@intersection : \@difference }, $element;
}

Note that this is the symmetric difference, that is, all elements in either A or in B but not in both. Think of it as an xor operation.


Here is a solution developed by Randal Schwartz but seems to fit your problem in another way from the faq.


Code
#!/usr/bin/perl 
use strict;
use warnings;

my ($word1, $word2) = qw/ abcd abcdxyz /;

my %letters;

$letters{$_} .= 'a' for split //, $word1;
$letters{$_} .= 'b' for split //, $word2;

my @uncomman;

for my $ltr (keys %letters) {
push @uncomman, $ltr if $letters{$ltr} =~ /^b/ || $letters{$ltr} =~ /a$/;
}

print @uncomman;


 
 


Search for (options) Powered by Gossamer Forum v.1.2.0

Web Applications & Managed Hosting Powered by Gossamer Threads
Visit our Mailing List Archives