Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Need a regex for matching multiple words within parentheses

by hanenkamp (Pilgrim)
on Dec 12, 2003 at 18:42 UTC ( [id://314380]=note: print w/replies, xml ) Need Help??


in reply to Need a regex for matching multiple words within parentheses

There are a couple obvious problems.

First, (.). in the third match should contain a quantifier and you should be careful of "." as a greedy match will swallow the end parenthesis and cause the match to fail. I'd use (\S+) or (.+?).

Second, you should have another backslash before the very last closing parenthesis.

Note: I didn't take the time to test these recommendations.

Update: Er...duh, don't do that...

Update: That is, don't do the striked one, it will get the first word (or more if there is no whitespace between), but the other works fine. Sorry, I was unclear.

Replies are listed 'Best First'.
Re: Re: Need a regex for matching multiple words within parentheses
by Not_a_Number (Prior) on Dec 12, 2003 at 19:51 UTC
    Er...duh, don't do that...

    Why not? Your suggestion - with (.+?) - works fine for me:

    while ( <DATA> ) { if ( /^ALTER\s+TABLE\s+ (\w+) # $1 \s+ADD\s+CONSTRAINT\s+ (\w+) # $2 \s+PRIMARY\s+KEY\s+\(\s* (.+?) # $3 \s*\)/x ) { print "\$1: <$1> \$2: <$2> \$3: <$3>\n"; } } __DATA__ ALTER TABLE ORDERS ADD CONSTRAINT PK_ORDER_ORDER_NUM PRIMARY KEY ( ORD +ER_NUM) ALTER TABLE ORDER_ITEMS ADD CONSTRAINT PK_ORDER_NUM_ITEMS PRIMARY KEY +( ORDER_NUM, ITEM_NUM, SUB_TYPE )

    ++hanenkamp (or have I missed something?)

    dave

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://314380]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2024-04-20 00:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found