Find/replace string that spans lines in a file with REBOL

html, rebol, rebol2, rebol3, replace

Solution

I'm not sure about `replace` but this is a good opportunity for `parse` to work well:

index-html: read %index.html
out: copy ""
new-div: "..."

;;parse rules

title: [
    {<div class="logo">} thru {</div>} (append out new-div) ;;appends replacement when it finds that class
]

rule: [
    some [
        title |
        copy char skip (append out char)  ;;copies every other char char
    ]
]

parse index-html rule

write %index.html out

Don't have the index file, but this should work. Take some time to carefully study string parsing. It is very powerful.

Problem

I have an HTML page, and I need to replace a couple of lines in it. However, using `replace` can't seem to find anything bigger than a single line. This is what I would like to replace (there are multiple instances of it in the page): ``` .... <div class="logo"> <img src="resources/logo.svg" /> <span>e</span> <span class="text">Market</span> </div> ... ``` Here's the code I am trying, but it doesn't work: ``` index-html: read %index.html logo-div: {<div class="logo"> <img src="resources/logo.svg" /> <span>e</span> <span class="text">Market</span> </div>} new-div: {...} out: replace/all index-html logo-div new-div write %index.html out ``` Including `^/` in my `logo-div` string to denote the newlines doesn't help. How can I find this entire string? (I am using Rebol2, but I assume the functionality will be the same or very similar in Rebol3.)

Original source