RegEx case

Posted on 2014-10-20
Last Modified: 2014-10-20
I want to write the most simple perl condition to test URL against, using !~ operator without using || and multiple tests.

I need something like :
if ( !~ "(www.)?")

But ..
it will return false for""       which is ok since i want only and to match.
it will return false for""                 which is ok since i want only and to match
it will return true for""           which is ok since i want only and to match
it will return false for"ANYTHING.foobarcom"           which is NOT OK since i want only and to match
Question by:Stampel
  • 2
  • 2
LVL 84

Expert Comment

ID: 40392371

Author Comment

ID: 40392531
This is not working.
I want the reg expression corrected in this expression :
 [if ( !~ "(www.)?") ]
so that it will return good values when tested against provided values in my exemple.

You can test with :
perl -e 'if ("" !~ "(www.)?") {print "TRUE\n";} else {print "FALSE\n";}'
perl -e 'if ("" !~ "(www.)?") {print "TRUE\n";} else {print "FALSE\n";}'
perl -e 'if ("" !~ "(www.)?") {print "TRUE\n";} else {print "FALSE\n";}'
perl -e 'if ("" !~ "(www.)?") {print "TRUE\n";} else {print "FALSE\n";}'
=> FALSE THIS ONE IS WRONG, Fix REGEX in the IF to make it returns TRUE
LVL 84

Accepted Solution

ozo earned 500 total points
ID: 40392555
perl -e 'if ("" !~ /^(www\.)?foobar\.com$/ ) {print "TRUE\n";} else {print "FALSE\n";}'

Author Comment

ID: 40392671
OK that make sense, i guess the problem is in my script because of " "
When used in a script i have to remove beginning and trailing "/" from input_regexp and it finally works as expected.

$input_string = $ARGV[0];
$input_regexp = '^(www\.)?foobar\.com$';
if ( $input_string !~ $input_regexp) {print "FALSE\n";} else {print "TRUE\n"};

I will test in my varnish config to see if it works as expected

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Why Shell Scripting? Shell scripting is a powerful method of accessing UNIX systems and it is very flexible. Shell scripts are required when we want to execute a sequence of commands in Unix flavored operating systems. “Shell” is the command line i…
It’s 2016. Password authentication should be dead — or at least close to dying. But, unfortunately, it has not traversed Quagga stage yet. Using password authentication is like laundering hotel guest linens with a washboard — it’s Passé.
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.

932 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now