[REBOL] Re: A question about a regular expression
From: lethalman:fyrebird at: 17-Oct-2004 11:03
Carl Read wrote:
>On Sunday, 17-October-2004 at 10:22:25 you wrote,
>
>>Hello,
>>(first sorry for my poor English)
>>I've this string: "<a href='http://bla'>Test</a><a
>>href='http://blabla'>Test2</a>"
>>Now i would like to get Test and Test2. In Perl i use the following regexp:
>><a href='.*?'>(.+?)</a>
>>So i get Test and Test2, but how can i do this in Rebol?
>>The user will specify the two string between are both Test and Test2, like:
>>Before: <a href='*'>
>>After: </a>
>>So i will get Test and Test2.
>>
>>Is there any way to do this?
>>
>>
>
>Assuming the format of the string remains the same (and I've understood you correctly),
you could use something like the following, (though it's a bit quick and dirty)...
>
>>>str: "<a href='http://bla'>Test</a><a>href='http://blabla'>Test2</a>"
>>>
>>>
>== {<a href='http://bla'>Test</a><a>href='http://blabla'>Test2</a>}
>
>>>blk: parse/all str "<>"
>>>
>>>
>== ["" "a href='http://bla'" "Test" "/a" "" "a" "href='http://blabla'" "Test2" "/a"]
>
>>>blk/3
>>>
>>>
>== "Test"
>
>>>blk/8
>>>
>>>
>== "Test2"
>
>This would work if your user supplied text with spaces in it too...
>
>>>str: "<a href='http://bla'>Test One</a><a>href='http://blabla'>Test2</a>"
>>>
>>>
>== {<a href='http://bla'>Test One</a><a>href='http://blabla'>Test2</a>}
>
>>>blk: parse/all str "<>"
>>>
>>>
>== ["" "a href='http://bla'" "Test One" "/a" "" "a" "href='http://blabla'" "Test2" "/a"]
>
>>>blk/3
>>>
>>>
>== "Test One"
>
>>>blk/8
>>>
>>>
>== "Test2"
>
>A proper parse rule to create a tidier output could be written of course, but if the
above does what you want then you might as well use it.
>
>-- Carl Read
>
Thanks for your reply, but there's a problem...
If the user specifies:
Before: <tr><td><a href='http://*'>
After: </a></td></tr>
It won't work...
I need something more dynamic
--
Fyrebird Hosting Provider - Technical Department