2

Замена по регулярному выражению

(regex-replace "fo+" "foo bar" "frob")
; "frob bar"
; T

(regex-replace "fo+" "FOO bar" "frob")
; "FOO bar"
; NIL

(regex-replace "(?i)fo+" "FOO bar" "frob")
; "frob bar"
; T

(regex-replace "(?i)fo+" "FOO bar" "frob" :preserve-case t)
; "FROB bar"
; T

(regex-replace "(?i)fo+" "Foo bar" "frob" :preserve-case t)
; "Frob bar"
; T

(regex-replace "bar" "foo bar baz" "[frob (was '\\&' between '\\`' and '\\'')]")
; "foo [frob (was 'bar' between 'foo ' and ' baz')] baz"
; T

(regex-replace "bar" "foo bar baz"
               '("[frob (was '" :match "' between '" 
                                :before-match "' and '" :after-match "')]"))
; "foo [frob (was 'bar' between 'foo ' and ' baz')] baz"
; T

(regex-replace "(be)(nev)(o)(lent)"
                          "benevolent: adj. generous, kind"
                          #'(lambda (match &rest registers)
                              (format nil "~A [~{~A~^.~}]" match registers))
                          :simple-calls t)
; "benevolent [be.nev.o.lent]: adj. generous, kind"
; T
-----------