ok, here it is:<div><br><div><a href="https://github.com/timotheecour/dtools/blob/master/dtools/util/util.d#L78">https://github.com/timotheecour/dtools/blob/master/dtools/util/util.d#L78</a></div><div>simplified implementation and added missing escape symbols. Any symbol missing?</div>
<div>I was basing myself based on <a href="http://dlang.org/phobos/std_regex.html">http://dlang.org/phobos/std_regex.html</a>, table entry '\c where c is one of', but that was incomplete. I'm also noting that table entry 'any character except' is also incomplete. </div>
<div><br></div><div><div>> Technically any working "escapeRegex" would also function as a valid "escapeRegexReplace", although it might be slightly faster to have a specialised one.</div><div><br></div>
<div>not sure, because they escape differently (\$ vs $$).</div><div><br></div><div>shall i do a pull request for std.regex?</div><div><br></div><br><div class="gmail_quote">On Wed, May 29, 2013 at 8:32 PM, Diggory <span dir="ltr"><<a href="mailto:diggsey@googlemail.com" target="_blank">diggsey@googlemail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Wednesday, 29 May 2013 at 23:33:30 UTC, timotheecour wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
something like this, which we should have in std.regex:<br>
<br>
string escapeRegex(string a){<br>
        import std.string;<br>
        enum transTable = ['[' : `\[`, '|' : `\|`, '*': `\*`, '+': `\+`, '?': `\?`, '(': `\(`, ')': `\)`];<br>
        return translate(a, transTable);<br>
}<br>
string escapeRegexReplace(string a){<br>
        import std.string;<br>
//      enum transTable = ['$' : `$$`, '\\' : `\\`];<br>
        enum transTable = ['$' : `$$`];<br>
        return translate(a, transTable);<br>
}<br>
<br>
unittest{<br>
        string a=`asdf(def[ghi]+*|)`;<br>
        assert(match(a,regex(<u></u>escapeRegex(a))).hit==a);<br>
        string b=`$aa\/$ $$#@$\0$1#$@%#@%=+_`;<br>
        auto s=replace(a,regex(escapeRegex(<u></u>a)),escapeRegexReplace(b));<br>
        assert(s==b);<br>
}<br>
</blockquote>
<br></div>
That would be good (although you missed a few :P)<br>
<br>
Technically any working "escapeRegex" would also function as a valid "escapeRegexReplace", although it might be slightly faster to have a specialised one.<br>
</blockquote></div><br></div></div>