I implemented something related to this a long time ago ( https://github.com/JuliaLang/julia/pull/1448). At the time, Stefan agreed that something like it was needed, but didn't like my implementation. Still hasn't happened (other things have had greater priority), but I think it would be worthwhile.
Kevin On Wed, Aug 13, 2014 at 12:07 AM, Jameson Nash <[email protected]> wrote: > right, in other words, it implements backreference substitutions > > > On Wed, Aug 13, 2014 at 3:01 AM, Steven Siew <[email protected]> > wrote: > >> replace(*string*, *pat*, *r*[, *n*]) >> >> Search for the given pattern pat, and replace each occurrence with r. If >> n is provided, replace at most n occurrences. As with search, the second >> argument may be a single character, a vector or a set of characters, a >> string, or a regular expression. If r is a function, each occurrence is >> replaced with r(s) where s is the matched substring. >> >> >> _ >> _ _ _(_)_ | A fresh approach to technical computing >> (_) | (_) (_) | Documentation: http://docs.julialang.org >> _ _ _| |_ __ _ | Type "help()" to list help topics >> | | | | | | |/ _` | | >> | | |_| | | | (_| | | Version 0.2.0 (2013-11-16 23:44 UTC) >> _/ |\__'_|_|_|\__'_| | Official http://julialang.org release >> |__/ | i686-w64-mingw32 >> >> julia> originalstring="Mary had a little lamb, her skin is as white as >> snow" >> >> "Mary had a little lamb, her skin is as white as snow" >> >> julia> replace(originalstring,r"\b([\w]*e) ([\w]*)","not \1 black \2") >> "Mary had a not \x01 black \x02, her skin is as not \x01 black \x02 snow" >> >> >> >> >> On Wednesday, August 13, 2014 4:05:23 PM UTC+10, John Myles White wrote: >> >>> Suspect I'm missing something. How is this different from the existing >>> function replace? >>> >>> -- John >>> >>> On Aug 12, 2014, at 11:03 PM, Steven Siew <[email protected]> wrote: >>> >>> > Using regex like in the programming language Perl to perform >>> replacements. >>> > >>> > >>> > function perlRegexReplace(str::ASCIIString,regex::Regex,rep::ASCIIString) >>> >>> > local m,len,result,inter >>> > m = match(regex,str) >>> > len=length(m.captures) >>> > result = replace(str,regex,rep) >>> > if len > 0 >>> > inter = eachmatch(regex,str) >>> > for (m in inter) >>> > for k = 1:len >>> > # Comment out the next line when using function for production >>> > println("Replacing \\",k," with ",m.captures[k]) >>> > result = replace(result,char(k),m.captures[k],1) >>> > end >>> > end >>> > end >>> > result >>> > end >>> > >>> > originalstring="Mary had a little lamb, her skin is as white as snow" >>> > >>> > resultstring = perlRegexReplace(originalstring,r"\b([\w]*e) >>> ([\w]*)","not \1 black \2") >>> > >>> > println("ORIGINAL: ",originalstring) >>> > println("RESULTST: ",resultstring) >>> > >>> > >>> > ====================================== >>> > >>> > >>> > C:\oracle\julia\scripts> ..\julia.bat perlRegexReplace3.jl >>> > Replacing \1 with little >>> > Replacing \2 with lamb >>> > Replacing \1 with white >>> > Replacing \2 with as >>> > ORIGINAL: Mary had a little lamb, her skin is as white as snow >>> > RESULTST: Mary had a not little black lamb, her skin is as not white >>> black as snow >>> >>> >
