Ahah! I forgot that the RegExp escape character (i.e., backslash) is
also the AS3 String escape character and therefore requires double
escaping! That's really annoying, isn't it?

 

That's a good reason to use RegExp literal notation rather than a
pattern String passed to the constructor:

 

/abc/igm  <=> new RegExp("abc", "igm")

 

/\[abc\]/ <=> new RegExp("\\[abc\\]", "igm")

 

I didn't actually check that the second one is equivalent, but I'm
pretty sure it is.

 

Gordon Smith

Adobe Flex SDK Team

 

________________________________

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of Derrick Anderson
Sent: Wednesday, April 16, 2008 11:48 AM
To: flexcoders@yahoogroups.com
Subject: Re: [flexcoders] RegExp searching for [ and ], are they
reserved? SOLVED

 

i think i figured it out, the [ and ] characters have to be
double-escaped like so

new RegExp("\\[[^]*\\]","igm");

d.

On Wed, Apr 16, 2008 at 2:17 PM, Derrick Anderson
<[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> > wrote:

just bumping this one up there, it is critical for my app to do this and
I see no way past it.  anybody ever needed to find content with regex
that contained [] characters?

thanks,
d.

 

On Wed, Apr 16, 2008 at 10:01 AM, Derrick Anderson
<[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> > wrote:

hey i'm not a regex pro by far which is why i asked if my regex was
wrong- but taking your suggestion it still does not work- not sure why.
i've used the RegExr air app to test this and the simplest i can get it
is new RegExp("\[[^]*\]","igm");

this works when {} are used but not when [] is used, you can see in the
example below- it looks like escaping the [] is affecting the match
(although it works fine in the regex test tool).



<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml
<http://www.adobe.com/2006/mxml> " layout="absolute">
    <mx:Script>
        <![CDATA[
            private var mergeRE:RegExp = new RegExp("\[[^]*\]","igm");
            private var mergeRE2:RegExp = new RegExp("{[^]*}","igm");
            
            public function runSquareBracketTest():void
            {
                 var response:Array = subjectString.text.match(mergeRE);
                 resultString.text = response.toString();
            }
            
            public function runCurlyBracketTest():void
            {
                 var response:Array =
subjectString.text.match(mergeRE2);
                 resultString.text = response.toString();
            }
        ]]>
    </mx:Script>
    
    <mx:VBox>
        <mx:TextArea id="subjectString" width="400" height="200">
            <mx:text>
                <![CDATA[<strong>[Employee First Name] </strong>
<strong>{Employee Last Name} </strong>]]>
            </mx:text>
        </mx:TextArea>
        <mx:TextArea id="resultString" width="400" height="200" />
        <mx:Button click="runSquareBracketTest();" label="Get first
name." />
        <mx:Button click="runCurlyBracketTest();" label="Get last name."
/>
    </mx:VBox>
</mx:Application>

On Tue, Apr 15, 2008 at 4:33 PM, Gordon Smith <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> > wrote:

I'm confused... why isn't your pattern something like "\[.*]\]" ? What's
going on with the ^ and the > ? What is supposed to match against
letters like E, m, p, l, etc.?

 

Gordon Smith

Adobe Flex SDK Team

 

________________________________

From: flexcoders@yahoogroups.com <mailto:flexcoders@yahoogroups.com>
[mailto:flexcoders@yahoogroups.com <mailto:flexcoders@yahoogroups.com> ]
On Behalf Of Derrick Anderson
Sent: Tuesday, April 15, 2008 1:23 PM
To: flexcoders@yahoogroups.com <mailto:flexcoders@yahoogroups.com> 
Subject: Re: [flexcoders] RegExp searching for [ and ], are they
reserved?

 

i had tried escaping them, below i've pasted an example of my problem- 2
samples: 1 looking for [Employee First Name] and one looking for
{Employee First Name}  (curly braces vs square braces) and even though
the brackets are escaped, the regex with [ and ] only return the ending
].  do i have the regex wrong?

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml
<http://www.adobe.com/2006/mxml> " layout="absolute">
    <mx:Script>
        <![CDATA[
            private var mergeRE:RegExp = new RegExp("\[[^>]*?\]","igm");
            private var mergeRE2:RegExp = new RegExp("{[^>]*?}","igm");
            
            public function runSquareBracketTest():void
            {
                 var response:Array = subjectString.text.match(mergeRE);
                 resultString.text = response.toString();
            }
            
            public function runCurlyBracketTest():void
            {
                 var response:Array =
subjectString.text.match(mergeRE2);
                 resultString.text = response.toString();
            }
        ]]>
    </mx:Script>
    
    <mx:VBox>
        <mx:TextArea id="subjectString" width="400" height="200">
            <mx:text>
                <![CDATA[<strong>[Employee First Name] </strong>
<strong>{Employee Last Name} </strong>]]>
            </mx:text>
        </mx:TextArea>
        <mx:TextArea id="resultString" width="400" height="200" />
        <mx:Button click="runSquareBracketTest();" label="Get first
name." />
        <mx:Button click="runCurlyBracketTest();" label="Get last name."
/>
    </mx:VBox>
</mx:Application>

On Tue, Apr 15, 2008 at 4:08 PM, Gordon Smith <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> > wrote:

[ and ] are metacharacters in RegExp patterns. For example, "[abc]"
matches either "a", or 'b" or "c". To prevent this interpretation,
escape them with a backslash.

 

Gordon Smith

Adobe Flex SDK Team

 

________________________________

From: flexcoders@yahoogroups.com <mailto:flexcoders@yahoogroups.com>
[mailto:flexcoders@yahoogroups.com <mailto:flexcoders@yahoogroups.com> ]
On Behalf Of Derrick Anderson
Sent: Tuesday, April 15, 2008 12:49 PM
To: flexcoders@yahoogroups.com <mailto:flexcoders@yahoogroups.com> 
Subject: [flexcoders] RegExp searching for [ and ], are they reserved?

 

hey all,

i'm trying to do a replace on a string and replace anything in brackets
with something else.

so [this] word would get replaced, however in the regex tester at
gskinner this works fine (it's flex based regex test tool) but in my
local code- i always get unexpected results when my regex expression has
brackets in it.

private var mergeRE:RegExp = new RegExp("\[[^>]*?]","igm");

is there another escape character i need to use, why does flash have a
problem searching for [ and ] in regex?

thanks,
d.

 

 

 

 

 

Reply via email to