Regular Expression Help Needed
Web Server forum
Back To The Forum Home!Search!Private Messaging System

Web Server Talk Web Server Talk > Unix and Linux reviews > Free Unix support > Unix questions > Regular Expression Help Needed




  Last Thread   Next Thread Next
  Show Printable Version Email this Page Subscribe to this Thread      Post New Thread    Post A Reply      

    Regular Expression Help Needed  
Deja User


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
02-11-04 07:36 AM

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





[ Post a follow-up to this message ]



    Re: Regular Expression Help Needed  
Gunnar Hjalmarsson


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
02-11-04 08:36 AM

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






[ Post a follow-up to this message ]



    Re: Regular Expression Help Needed  
Bruce Hartweg


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
02-11-04 09:36 AM



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






[ Post a follow-up to this message ]



    Re: Regular Expression Help Needed  
Deja User


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
02-12-04 06:36 AM

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.





[ Post a follow-up to this message ]



    Re: Regular Expression Help Needed  
Deja User


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
02-12-04 06:36 AM

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





[ Post a follow-up to this message ]



    Re: Regular Expression Help Needed  
Bruce Hartweg


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
02-12-04 09:36 AM



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






[ Post a follow-up to this message ]



    Re: Regular Expression Help Needed  
Programmer Dude


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
02-12-04 09:36 AM

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 <Chris@Sonnack.com> _____________| How's my programming? |
|_ http://www.Sonnack.com/ ___________________| Call: 1-800-DEV-NULL  |
 |_______________________________________
______|_______________________|





[ Post a follow-up to this message ]



    Re: Regular Expression Help Needed  
Barry Margolin


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
02-12-04 09:36 AM

In article <ba74bae9.0402120702.99c5bdb@posting.google.com>,
dejauser@safe-mail.net (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, barmar@alum.mit.edu
Arlington, MA
*** PLEASE post questions in newsgroups, not directly to me ***





[ Post a follow-up to this message ]



    Re: Regular Expression Help Needed  
John W. Krahn


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
02-12-04 04:34 PM

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





[ Post a follow-up to this message ]



    Re: Regular Expression Help Needed  
Deja User


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
02-13-04 09:35 AM

Thanks for very detailed explanation...  There is a 3rd party
application I am using that filters out unwanted lines.  It uses GNU
regular expression engine.





[ Post a follow-up to this message ]



    Sponsored Links  




 





   All times are GMT. The time now is 05:23 PM.      Post New Thread    Post A Reply      
  Last Thread   Next Thread Next


Most Popular forums 

Forum Jump:
Rate This Thread:

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is OFF
 
Medical and Health forum | Computer Games Reviews | Graphics design forum

Back To The Top
Home | Usercp | Faq | Register