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
>>>
>>>
>

Reply via email to