Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Perl Misc > Regular Expression Help Needed

Reply
Thread Tools

Regular Expression Help Needed

 
 
Deja User
Guest
Posts: n/a
 
      02-11-2004
I am new to regular expressions and I can't seem to figure out
following.

(1) Regular expression should find a match, if the given string does
NOT start with 90, 91, 31, or 32.

(2) Find a match, if the string contains DNI or 'DO NOT INSTALL'
anywhere in the string.

I need two seperate expressions for (1) and (2).

Thanks
 
Reply With Quote
 
 
 
 
Gunnar Hjalmarsson
Guest
Posts: n/a
 
      02-11-2004
Didn't you find any further newsgroups where you could post your
homework questions?

Deja User wrote:
> I am new to regular expressions and I can't seem to figure out
> following.
>
> (1) Regular expression should find a match, if the given string
> does NOT start with 90, 91, 31, or 32.
>
> (2) Find a match, if the string contains DNI or 'DO NOT INSTALL'
> anywhere in the string.
>
> I need two seperate expressions for (1) and (2).


What have you tried so far?

--
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl

 
Reply With Quote
 
 
 
 
Paul Lalli
Guest
Posts: n/a
 
      02-11-2004
> Date: 11 Feb 2004 08:13:13 -0800
> From: Deja User <(E-Mail Removed)>
> Newsgroups: comp.lang.perl.misc, comp.lang.tcl, comp.unix.questions, alt.php,
> comp.programming
> Subject: Regular Expression Help Needed
>
> I am new to regular expressions and I can't seem to figure out
> following.
>
> (1) Regular expression should find a match, if the given string does
> NOT start with 90, 91, 31, or 32.
>
> (2) Find a match, if the string contains DNI or 'DO NOT INSTALL'
> anywhere in the string.
>
> I need two seperate expressions for (1) and (2).
>
> Thanks
>


Well, I have no idea what all those other groups will give you, but here
you'll get a perl answer. And btw, this sounds suspciously like a
homework question.... naughty naughty.

$string !~ /^(90|91|31|32)/

$string =~ /(DNI|DO NOT INSTALL)/

Paul Lalli
 
Reply With Quote
 
Bruce Hartweg
Guest
Posts: n/a
 
      02-11-2004


Deja User wrote:

> I am new to regular expressions and I can't seem to figure out
> following.
>

this will help learn about REs

http://www.tcl.tk/man/tcl8.4/TclCmd/re_syntax.htm
> (1) Regular expression should find a match, if the given string does
> NOT start with 90, 91, 31, or 32.
>

a negative lookahead constraint is what you want:

http://www.tcl.tk/man/tcl8.4/TclCmd/re_syntax.htm#M26

regexp {^(?!(90|91|31|32))} $input

> (2) Find a match, if the string contains DNI or 'DO NOT INSTALL'
> anywhere in the string.
>

this is simple alternation

regexp {DNI|NO NOT INSTALL} $input


> I need two seperate expressions for (1) and (2).
>
> Thanks


Bruce

 
Reply With Quote
 
Deja User
Guest
Posts: n/a
 
      02-12-2004
Thanks for the help. Just to clear things up, this is NOT a homework
question.. I already graduated from collge in 94. I am just new to
regular expressions. I already did some research on the web and read
some tutorials.. but still having trouble.
 
Reply With Quote
 
Deja User
Guest
Posts: n/a
 
      02-12-2004
Here is my input and I am testing it in UltraEdit.. but your
suggestions don't seem to work. Am I doing anything wrong? I was
hoping that UltraEdit would highlight the matched lines.

INPUT
-----

32000806-001
91000883-xxx
64000343-394
20032043-001
31091003-003
90384334-092
10903103-033
20932002-934
This is my cat
cat is good
Test Point, DNI
TP, DO NOT INSTALL
DNI
34000000-343
 
Reply With Quote
 
Programmer Dude
Guest
Posts: n/a
 
      02-12-2004
Deja User wrote:

> I am new to regular expressions and I can't seem to figure out
> following.
>
> (1) Regular expression should find a match, if the given string
> does NOT start with 90, 91, 31, or 32.


A pity about that "NOT". To find strings that match, you can just
do:
^((3[12])|(9[01])).*$

This is worth exploring if you're not too familiar with REs.

^((3[12])|(9[01])).*$ - the whole thing
^ - anchors RE to start of line
( ) - groups the two possible sub-patterns
( )|( ) - sub-pattern A *OR* sub-pattern B
3[12] - a "3" followed by a "1" or "2"
9[10] - a "9" followed by a "0" or "1"
.* - anything (i.e. rest of the line)
$ - anchors RE to end of line

NOTE: some systems require you to escape the grouping parentheses
and the "either/or" delimiter:

^\(\(3[12]\)\|\(9[01]\)\).*$

But the combination of the NOT and the double-digit prefixes makes
it a little harder. Something like this, perhaps:

^((9[^01])|(3[^12])|[^39]).*$

Broken out a bit:

^( (9[^01]) | (3[^12]) | [^39] ) .* $

This works by allowing lines that don't match.

^((9[^01])|(3[^12])|[^39]).*$ -
^( | | ).*$ - SOL, prefix, rest of line, EOL
(9[^01]) - "9" + NOT "0" or "1"
(3[^12]) - "3" + NOT "1" or "2"
[^39] - anything BUT NOT "3" or "9"

> (2) Find a match, if the string contains DNI or 'DO NOT INSTALL'
> anywhere in the string.


Easy:
(DNI)|(DO NOT INSTALL)


--
|_ CJSonnack <(E-Mail Removed)> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL |
|_____________________________________________|___ ____________________|
 
Reply With Quote
 
Bruce Hartweg
Guest
Posts: n/a
 
      02-12-2004


Deja User wrote:
> Here is my input and I am testing it in UltraEdit.. but your
> suggestions don't seem to work. Am I doing anything wrong? I was
> hoping that UltraEdit would highlight the matched lines.
>
> INPUT
> -----
>
> 32000806-001
> 91000883-xxx
> 64000343-394
> 20032043-001
> 31091003-003
> 90384334-092
> 10903103-033
> 20932002-934
> This is my cat
> cat is good
> Test Point, DNI
> TP, DO NOT INSTALL
> DNI
> 34000000-343


There was a typo in the 2nd RE (had NO instead of DO) but other than that
the REs work (run the following

set RE1 {^(?!(90|91|31|32))}
set RE2 {DNI|DO NOT INSTALL}

set input {
32000806-001
91000883-xxx
64000343-394
20032043-001
31091003-003
90384334-092
10903103-033
20932002-934
This is my cat
cat is good
Test Point, DNI
TP, DO NOT INSTALL
DNI
34000000-343
}

foreach line [split $data \n] {
puts "Checking >> $line << :"
if {[regexp $RE1 $line]} {puts " Does NOT start with 90,91,31 or 32"}
if {[regexp $RE2 $line]} {puts " Contains DNI or DO NOT INSTALL"}
puts ""
}

Note that this is Tcl (since thats the newsgroup I read your question on)
and I don;t know Ultraedit, so the RE syntax could be slightly different
(as well as supoort for negative lookaheads) - so either the REs need
tweaked for Ultraedit, or there is something else in the settings beyaond
the RE for UltraEdit to highlight.

Bruce

 
Reply With Quote
 
Barry Margolin
Guest
Posts: n/a
 
      02-12-2004
In article <(E-Mail Removed)> ,
http://www.velocityreviews.com/forums/(E-Mail Removed) (Deja User) wrote:

> Here is my input and I am testing it in UltraEdit.. but your
> suggestions don't seem to work. Am I doing anything wrong? I was
> hoping that UltraEdit would highlight the matched lines.


Different programs use different regular expression matchers, and they
often have different advanced features. I believe the suggestions were
intended for TCL, since you cross-posted to comp.lang.tcl.

Which language are you really planning to use? Post just to that group,
and you should get an answer most appropriate to your needs.

--
Barry Margolin, (E-Mail Removed)
Arlington, MA
*** PLEASE post questions in newsgroups, not directly to me ***
 
Reply With Quote
 
John W. Krahn
Guest
Posts: n/a
 
      02-13-2004
Deja User wrote:
>
> Thanks for the help. Just to clear things up, this is NOT a homework
> question.. I already graduated from collge in 94. I am just new to
> regular expressions. I already did some research on the web and read
> some tutorials.. but still having trouble.


Your best bet is to get the book Mastering Regular Expressions.
http://www.oreilly.com/catalog/regex2/index.html


John
--
use Perl;
program
fulfillment
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Regular Expression - Help needed ragz_82 Java 1 08-04-2009 07:59 AM
Regular expression - help needed Chanchal Java 1 12-13-2005 07:24 AM
quick help needed on regular expression validator David Cho ASP .Net 4 02-15-2005 09:47 AM
Help needed: cryptic perl regular expression in python syntax pekka niiranen Python 5 10-20-2004 12:39 PM
Dynamically changing the regular expression of Regular Expression validator VSK ASP .Net 2 08-24-2003 02:47 PM



Advertisments