# Equivalent of perl's \\Q in regexps?

**URL:** <https://www.ruby-forum.com/t/equivalent-of-perls-q-in-regexps/100275>\
**Category:** Ruby\
**Created:** [July 28, 2006, 3:13am UTC](https://www.ruby-forum.com/t/equivalent-of-perls-q-in-regexps/100275 "2006-07-28T03:13:06Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![saikun](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/fbc32d/32.png) [@saikun](https://www.ruby-forum.com/u/saikun)\
**Post date:** [July 28, 2006, 3:13am UTC](https://www.ruby-forum.com/t/equivalent-of-perls-q-in-regexps/100275/1 "2006-07-28T03:13:06Z")

</div>

marker = ‘\*\*\*’

code = \<\<-EOT  
var x = 1  
//\*\*\* hello  
function foo() {}  
EOT

p code.to\_a.grep(/\*\*\*/) # -\> ["//\*\*\* hello\n"] that’s what  
I  
want but using marker

#p code.to\_a.grep(/#{marker}/) # -\> invalid regexp error

p code.to\_a.grep(/#{%q(marker)}/) # -\> [], doesn’t work

In perl you can do /\Q$marker/ and it escapes $marker for the regexp.

Simon.

---

<div class="post-metadata">

**Author:** ![saikun](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/fbc32d/32.png) [@saikun](https://www.ruby-forum.com/u/saikun)\
**Post date:** [July 28, 2006, 3:28am UTC](https://www.ruby-forum.com/t/equivalent-of-perls-q-in-regexps/100275/2 "2006-07-28T03:28:37Z")

</div>

On 7/28/06, Simon B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> want but using marker  
> Simon.
> 
> –  
> Simon B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

Maybe you want %r:

regex = %r{^\s\*[a-z]}

---

<div class="post-metadata">

**Author:** ![saikun](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/fbc32d/32.png) [@saikun](https://www.ruby-forum.com/u/saikun)\
**Post date:** [July 28, 2006, 4:21am UTC](https://www.ruby-forum.com/t/equivalent-of-perls-q-in-regexps/100275/3 "2006-07-28T04:21:42Z")

</div>

On Jul 27, 2006, at 9:10 PM, Simon B. wrote:

> want but using marker  
> Simon.

Just guessing but I believe you want  
/#{Regexp.escape(marker)}/

or Regexp.new(Regexp.escape(marker))

---

<div class="post-metadata">

**Author:** ![saikun](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/fbc32d/32.png) [@saikun](https://www.ruby-forum.com/u/saikun)\
**Post date:** [July 28, 2006, 4:28am UTC](https://www.ruby-forum.com/t/equivalent-of-perls-q-in-regexps/100275/4 "2006-07-28T04:28:48Z")

</div>

On 7/28/06, Daniel B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Maybe you want %r:
> 
> regex = %r{^\s\*[a-z]}

No no, silly me that won’t help… you’d still have to escape the  
regex-special chars. Logan’s got a better answer 🙂

;D

---

<div class="post-metadata">

**Author:** ![saikun](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/fbc32d/32.png) [@saikun](https://www.ruby-forum.com/u/saikun)\
**Post date:** [July 28, 2006, 6:20am UTC](https://www.ruby-forum.com/t/equivalent-of-perls-q-in-regexps/100275/5 "2006-07-28T06:20:21Z")

</div>

On 7/28/06, Logan C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > EOT
> > 
> > In perl you can do /\Q$marker/ and it escapes $marker for the regexp.
> 
> Just guessing but I believe you want  
> /#{Regexp.escape(marker)}/
> 
> or Regexp.new(Regexp.escape(marker))

Cool. It works. Thanks

Not quite as pretty as I’d like. Maybe a %R(…) would be a nice  
sweetener.  
Simon.
