| Search perlmeme.org | |
| Home » Faqs » Regexp » Matching capitals |
You need a regular expression that will match text where every word begins with a capital letter. For example, you regular expression will match:
Every Good Boy Deserves Fruit
But will not match
Hi, my name is Bill
Try:
#!/usr/bin/perl
use strict;
use warnings;
# Get input
while (<>) {
# Provide a way of exiting
last if ($_ eq "\n");
print " line: $_";
print "matched: $_" if ($_ =~ m/^([A-Z&]\S*\s*)+$/);
}
The regular expression is explained as follows:
^ From the start of the text
[A-Z&] Match a capital letter or an &
\S* Followed by zero or more non-whitespace characters
\s* Followed by zero or more whitespace characters
+ Do all the above one or more times
$ until the end of the text
This will match:
Cats
Cats And Dogs
A Man Walks Down The Street
Johnson & Johnson CauLife Ins. Co.
Should, See This-line
But will not match:
Ignore this line?
johnson & johnson CaulLife Ins. Co.
A man walks down the street
For more information on regular expressions, see:
perldoc perlretut
perldoc perlre