[erlang-questions] escaping chars in re:replace

Wes James <>
Wed Jul 28 00:00:44 CEST 2010


What I'm doing is providing a search for site on book titles.  There
are *, [, (, ? chars in the data and I'm putting bold html around the
search text.  <b>search text</b>

I'm using re:replace on the the database return value.

Say a person types in "(b)", then on the page output this needs to be
changed to <b>(b)</b>.

Is there a better way to get the <b> around text with erlang other
than the re:replace?

thx,

-wes

On Tue, Jul 27, 2010 at 3:43 PM, Fred Hebert <> wrote:
> There are many characters to escape:  ()[]{}\|*.+?:!$^<>= to name those I
> can think of.
>
> You have to be careful when accepting user-submitted regular expressions,
> because it's possible to find pathological cases that will take a long time
> to be ran. As far as I know, Erlang's re module is implemented as C code,
> which could potentially lock your node (if anyone can confirm/deny).
> It's generally a bad idea to run user-submitted regular expressions
> server-side.
> On Tue, Jul 27, 2010 at 4:40 PM, Wes James <> wrote:
>>
>> I'm replacing some values in some data.  It looks like when using
>>
>> re:replace here:
>>
>> http://www.erlang.org/doc/man/re.html
>>
>> the RE parameter needs to have the chars *, [, (,) escaped to be used.
>>
>> For example:
>>
>> re:replace("this*", "*", "!", [{return,list}, global, caseless])
>>
>> will error out with a bad argument error.  But this will work:
>>
>> re:replace("this*", "\\*", "!", [{return,list}, global, caseless])
>>
>>
>> What other chars should I be looking for that need to be escaped?  The
>> RE value comes in as a variable, so I will need to change any of these
>> chars to escaped before using it in re:replace.
>>
>> thx,
>>
>> -wes
>>
>> ________________________________________________________________
>> erlang-questions (at) erlang.org mailing list.
>> See http://www.erlang.org/faq.html
>> To unsubscribe; mailto:
>>
>
>


More information about the erlang-questions mailing list