[REBOL] Re: A question about a regular expression
From: carl:cybercraft at: 17-Oct-2004 9:33
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