Josh,

For what it's worth, \w will match '_' (it's true of REs pretty much
everywhere, and I just tried and as3 is the same). I played around with
your example a bit, but I can't offer any more insight. The closest I
got would leave stray '.'s on the ends of the matches, and you'd have to
clean those up manually anyway. I need to learn lookahead...

Alternately, you could String.split('.') and validate the individual
tokens.
-- 
Maciek Sakrejda
Truviso, Inc.
http://www.truviso.com

-----Original Message-----
From: Josh McDonald <[EMAIL PROTECTED]>
Reply-To: [email protected]
To: [email protected]
Subject: Re: [flexcoders] Re: Matching n groups with a regex?
Date: Fri, 3 Oct 2008 17:52:42 +1000

I need to do two things:

1: make sure the string matches /^[a-zA-Z0-9_]+(?:\.[a-zA-Z0-9_]+)+$/
2: extract all the individual words (not the dots)

I Can't use \w because it doesn't match "_".

At the moment I'm just using String.split(".") after using the regexp to
test validity. 

-Josh

On Fri, Oct 3, 2008 at 5:19 PM, mookie298347 <[EMAIL PROTECTED]>
wrote:
        Hmm, maybe I am not understanding your needs.
        
        
        My pattern works on your example of
        "*&%*&^objectA()*&)(*&908objectB,objectC"
        
        The resulting array contains:
        objectA
        908objectB
        objectC
        
        Which is what I thought you wanted.
        
        
        Also, the problem in your RE *is* the non-capturing group which
        is
        consuming your 'objectB.' You can verify this by using a
        lookahead
        assertion (?=) instead of the noncapture (?:) group.
        
        var patt:RegExp = /([a-zA-Z0-9_]+)(?=\.?(?:[a-zA-Z0-9_]*))/g;
        
        This pattern results in the same output as my simple pattern
        using
        lookahead assertions.
        
        If these aren't the results you were looking for let me know and
        I can
        take another look.
        
        HTH
        
        Rob
        
        --- In [email protected], "Josh McDonald" <[EMAIL PROTECTED]>
        wrote:
        >
        
        > That will also match "*&%*&^objectA()*&)(*&908objectB,objectC"
        as
        well which
        > isn't what I'm trying to do.
        >
        > Like I said in the first post, I also tried throwing out the
        non-matching
        > group altogether and simply trying to get
        ["objectA",".objectB",".objectC"]
        > and discarding the dots in the loop (not nice, but better than
        not
        working
        > at all), and it didn't work. So I don't think the problem is
        that it's
        > wrapped in a non-matching group.
        >
        
        
        > On Fri, Oct 3, 2008 at 11:34 AM, mookie298347 <[EMAIL PROTECTED]>
        wrote:
        >
        > > Hi Josh,
        > >
        > > Your match is skipping over objectB because it is being
        "consumed"
        > > (and not captured) by this part of your regular expression:
        > >
        > > (?:\.([a-zA-Z0-9_]+))+
        > >
        > > If you simply want to match all word characters between dots
        you can
        > > simply do:
        > >
        > >        var str:String = 'objectA.objectB.objectC';
        > >        var patt:RegExp = /\w+/g;
        > >        var matches:Object = str.match(patt);
        > >        trace(ObjectUtil.toString(matches));
        > >
        > > This captures all consecutive word character groups in the
        string.
        > >
        > > HTH
        > >
        > > Cheers,
        > > Rob
        > >
        > >
        > > --- In [email protected], "Josh McDonald" <dznuts@>
        wrote:
        > > >
        > > > Hey guys,
        > > >
        > > > I'm trying to turn this "objectA.objectB.objectC" into
        ["objectA",
        > > > "objectB", "objectC"] using a regex, but all I seem to get
        using
        > > > String.match() is ["objectA", "objectC"]. Can anybody tell
        me what's
        > > wrong
        > > > with the following?
        > > >
        > > > const multiLevelReferencePattern : RegExp =
        > > > /([a-zA-Z0-9_]+)(?:\.([a-zA-Z0-9_]+))+/;
        > > >
        > > > I also tried to match into ["objectA", ".objectB",
        ".objectC"] by
        > > throwing
        > > > out the non-matching group and rolling the "\." into the
        last
        matching
        > > > group, but I still get the same result (only the last
        match comes
        > > through).
        > > >
        > > > For now I've switched to a simpler regex in order to
        RegExp.test() the
        > > > string and then using String.explode(), but I would like
        to do both
        > > at once
        > > > using String.match() if possible.
        > > >
        > > > Cheers,
        > > > -Josh
        > > >
        > > > --
        > > > "Therefore, send not to know For whom the bell tolls. It
        tolls for
        > > thee."
        > > >
        > > > http://flex.joshmcdonald.info/
        > > >
        > > > :: Josh 'G-Funk' McDonald
        > > > :: 0437 221 380 :: josh@
        > > >
        > >
        > >
        > >
        > > ------------------------------------
        > >
        > > --
        > > Flexcoders Mailing List
        > > FAQ:
        http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
        > > Alternative FAQ location:
        > >
        
https://share.acrobat.com/adc/document.do?docid=942dbdc8-e469-446f-b4cf-1e62079f6847
        > > Search Archives:
        > > http://www.mail-archive.com/flexcoders%
        40yahoogroups.comYahoo! Groups
        > > Links
        > >
        > >
        > >
        > >
        >
        >
        
        > --
        
        > "Therefore, send not to know For whom the bell tolls. It tolls
        for
        thee."
        >
        > http://flex.joshmcdonald.info/
        >
        > :: Josh 'G-Funk' McDonald
        > :: 0437 221 380 :: [EMAIL PROTECTED]
        >
        
        
        
        ------------------------------------
        
        --
        Flexcoders Mailing List
        FAQ:
        http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
        Alternative FAQ location:
        
https://share.acrobat.com/adc/document.do?docid=942dbdc8-e469-446f-b4cf-1e62079f6847
        Search Archives: http://www.mail-archive.com/flexcoders%
        40yahoogroups.comYahoo! Groups Links
        
        
        
        



-- 
"Therefore, send not to know For whom the bell tolls. It tolls for
thee."

http://flex.joshmcdonald.info/

:: Josh 'G-Funk' McDonald
:: 0437 221 380 :: [EMAIL PROTECTED]

 


Reply via email to