Regexp for url address

Hi programmers,
I have question about Perl regular expression:

I have for example that url:
http://google.com/search?q=regexp

and I need the expression that is true if data contains "http://google." and not contain "regexp"

It is possible to do that somehow?
LVL 6
Jan Vojtech VanicekIT SpecialistAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

käµfm³d 👽Commented:
Based on what you described, you should be able to use a negative lookahead.

e.g.

$input =~ m/http:\/\/google\.(?!.*regexp)/;

Open in new window

0
Derek JensenCommented:
So if I understand your question correctly, you're looking for URLs that start with http://google, but does not contain a search parameter value? Is this for search string injection or something?

You should be able to accomplish the above stated goals with the following regexp:

/http:\/\/google\..*(?<!regexp)/

Open in new window

If you're wanting to do something more advanced, then we'll need to know more about what you're trying to do exactly, perhaps with some code snippets. :-)
0
Jan Vojtech VanicekIT SpecialistAuthor Commented:
Im trying to setup a rule in my firewall, it supports regular expressions in content filter, based on Perl

I need rule that fires action when Im accessing some site eg. google and there isnt some string in the query.
0
HTML5 and CSS3 Fundamentals

Build a website from the ground up by first learning the fundamentals of HTML5 and CSS3, the two popular programming languages used to present content online. HTML deals with fonts, colors, graphics, and hyperlinks, while CSS describes how HTML elements are to be displayed.

käµfm³d 👽Commented:
Derek Jensen's pattern won't work because it roughly checks that the string does not end with "regexp", not that it does not contain such.
0
Jan Vojtech VanicekIT SpecialistAuthor Commented:
Maybe I implement it badly, but none of solutions is working :-( and also I cant debug it, it simply not working
0
Jan Vojtech VanicekIT SpecialistAuthor Commented:
0
käµfm³d 👽Commented:
What I gave you above was Perl code. I thought that's what you were after when I read your original question. The part of that code that is just the pattern is this:

http:\/\/google\.(?!.*regexp)

Open in new window

0
Derek JensenCommented:
@kaufmed,
Indeed you are correct. I should've trusted my gut & posted what I assumed he was asking for, as it was much closer to what he actually wanted than what I ended up posting. Let me see if I can duplicate it...

https?:\/\/(www\.)?google\.com\/(.+?)(\?|#)(?=.*regexp)

Open in new window

Ok so not exactly the same, but I think I like this version better, as it's more flexible. :-)

So in the (?=.*regexp) portion of the regular expression, you would put what you're looking for, or not looking for, as the case may be, in place of "regexp". If you're wanting a not search, simply replace

(?=.*

with

(?!.*
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
skullnobrainsCommented:
use 2 rules

google.com.*allowedstuff -> ALLOW
google.com -> YOUR_SPECIFIC_ACTION

negative lookaheads should work. maybe your firewall does not handle them
0
Jan Vojtech VanicekIT SpecialistAuthor Commented:
Sorry, feature in my firewall is poorly supported, I havent get running even simplier regexps. So I cant tell who has right.
0
skullnobrainsCommented:
try simple eregs with and without delimiters ( "/.*/" VS ".*" )

note that your eregs may be docked (IE implicitely mach the whole string so when you type "stuff.*otherstuff", the firewall treats it as "^stuff.*otherstuff$" rather than ".*stuff.*otherstuff.*"

start with the simplest possible ereg such as ".*" and make it gradually more complex

i have no idea what firewall you are using, but there should be some documentation

good luck
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Regular Expressions

From novice to tech pro — start learning today.