I seem to be having some mixed results with this one:
var tStr : String = '-path:c:\test path\temp -param spaced string -x'
var patt : RegExp = new RegExp(
'(?<=[-{1,2}|/])(?P<name>[a-zA-Z0-9]*)(?::|=)*(?P<value>[\w|.|?|=|&|+|
|:|/|\\]*)(?=[ |"]|$)' , 'g');
var result : Object = patt.exec(tStr );
As it currently stands - it's not picking up P<value> properly. it seems to be
working in Grants RegExp tool. But am having issues picking up the groups in my
code.
This is my first attempt with RegExp, I guess it's not the easiest start.
Maybe it would be better to write a parser for this one, but am curious to know
if it can be done with AS3 RegExp.
Cheers
Karim
On 13 Mar 2011, at 09:27, Karim Beyrouti wrote:
> This is great - thanks for explaining, helps a lot.
>
> the original expression I posted works this tool : http://gskinner.com/RegExr
> I would love to know what magic Grant is using to get it working in his
> RegExp utility.
>
>
> Thank you Anthony.
>
>
> On 11 Mar 2011, at 23:42, Anthony Pace wrote:
>
>> Hi Karim and Ktu,
>>
>> Below is an explanation of what appears to be going on in the given pattern:
>>
>> (?:\s*)
>> is a greedy non-capturing group of whitespace
>>
>> (?<=[-|/])
>> is looking behind the next section of the expression, (?<name>\w*),
>> for, what is in this case, a character set; as well, it does so
>> without including it in the result. In this case the character
>> set could also be written without the |, resulting in [-/]
>>
>> (?<name>\w*)
>> is looking for name>\w*, before the next expression [:|=]
>> you may have wanted (?P<name>\w*)
>>
>> [:|=]
>> is a character set : or =, but again does not need the |,
>> and could be [:=] or something like (?::|=)
>>
>> ("((?<value>.*?)(?<!\\)")|(?<value>[\w]*))
>> is what I think you may have wanted to be an alternation,
>> and in another language it would have worked; however, not in AS3.
>>
>> Apparently in AS3 in order to distinguish the syntax from a
>> lookbehind ?< you need to use the syntax ?P<desiredGroupName>
>> when defining a named group; as well, it is due to the fact that,
>> as far as I know, in AS3 you cannot use names of the same group
>> even a logical OR alternation.
>>
>>
>> On 3/11/2011 2:37 PM, Ktu wrote:
>>> I just plugged it into RegExr<http://www.regexr.com> and I can't make sense
>>> of it.
>>>
>>> Try using that tool to build it. It really helps
>>>
>>>
>>> On Fri, Mar 11, 2011 at 5:56 AM, Karim Beyrouti<[email protected]> wrote:
>>>
>>>> Hello lovely list...I am trying to run a RegExp pattern on a String, and am
>>>> not too sure why it's not working, and am not too sure why.
>>>> Here is the code:
>>>>
>>>> var tStr : String = '/a:"value" -big="this" -test:123
>>>> -test2=th_3'
>>>> var r : RegExp = new RegExp(
>>>> '(?:\s*)(?<=[-|/])(?<name>\w*)[:|=]("((?<value>.*?)(?<!\\)")|(?<value>[\w]*))');
>>>> var result : Object = r.exec( str );
>>>>
>>>> result returns null... Maybe you can shed some light on what i am doing
>>>> wrong here?
>>>>
>>>> Thanks...
>>>>
>>>>
>>>> Karim
>>>>
>>>> _______________________________________________
>>>> Flashcoders mailing list
>>>> [email protected]
>>>> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>>>>
>>>
>>>
>>
>> _______________________________________________
>> Flashcoders mailing list
>> [email protected]
>> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
> _______________________________________________
> Flashcoders mailing list
> [email protected]
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders