# String =~ string

**URL:** <https://www.ruby-forum.com/t/string-string/64361>\
**Category:** Ruby\
**Created:** [June 24, 2006, 7:54pm UTC](https://www.ruby-forum.com/t/string-string/64361 "2006-06-24T19:54:00Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![regularfry](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/45deac/32.png) [@regularfry](https://www.ruby-forum.com/u/regularfry)\
**Post date:** [June 24, 2006, 7:54pm UTC](https://www.ruby-forum.com/t/string-string/64361/1 "2006-06-24T19:54:00Z")

</div>

[class String - RDoc Documentation](http://ruby-doc.org/core/classes/String.html#M001849) says this:

“cat o’ 9 tails” =~ ‘\d’ #=\> nil

I get this:

irb(main):001:0\> “cat o’ 9 tails” =~ ‘\d’  
TypeError: type mismatch: String given  
from (irb):1:in `=~’  
from (irb):1

$ ruby -v  
ruby 1.8.4 (2005-12-24) [i386-mswin32]

Any clues?

---

<div class="post-metadata">

**Author:** ![regularfry](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/45deac/32.png) [@regularfry](https://www.ruby-forum.com/u/regularfry)\
**Post date:** [June 24, 2006, 9:23pm UTC](https://www.ruby-forum.com/t/string-string/64361/2 "2006-06-24T21:23:12Z")

</div>

Alex Y. wrote:

> $ ruby -v  
> ruby 1.8.4 (2005-12-24) [i386-mswin32]
> 
> Any clues?

Use a regexp:

irb(main):004:0\> “cat o’ 9 tails” =~ /\d/  
=\> 7

---

<div class="post-metadata">

**Author:** ![regularfry](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/45deac/32.png) [@regularfry](https://www.ruby-forum.com/u/regularfry)\
**Post date:** [June 24, 2006, 9:29pm UTC](https://www.ruby-forum.com/t/string-string/64361/3 "2006-06-24T21:29:45Z")

</div>

Timothy H. wrote:

> > ```
> > from (irb):1
> > 
> > ```

That’s not the point. Why is what I’m seeing different to what’s in the  
docs? They explicitly say I should be able to use a string there, and  
I’ve just wasted half an hour tracking that bug down because of that.

---

<div class="post-metadata">

**Author:** ![regularfry](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/45deac/32.png) [@regularfry](https://www.ruby-forum.com/u/regularfry)\
**Post date:** [June 24, 2006, 9:29pm UTC](https://www.ruby-forum.com/t/string-string/64361/4 "2006-06-24T21:29:55Z")

</div>

On Jun 24, 2006, at 1:51 PM, Alex Y. wrote:

> $ ruby -v  
> ruby 1.8.4 (2005-12-24) [i386-mswin32]
> 
> Any clues?
> 
> –  
> Alex

String#=~ used to automagically convert the second arg into a regexp.  
It doesn’t do that anymore.

---

<div class="post-metadata">

**Author:** ![regularfry](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/45deac/32.png) [@regularfry](https://www.ruby-forum.com/u/regularfry)\
**Post date:** [June 24, 2006, 9:33pm UTC](https://www.ruby-forum.com/t/string-string/64361/5 "2006-06-24T21:33:09Z")

</div>

Logan C. wrote:

> String#=~ used to automagically convert the second arg into a regexp. It  
> doesn’t do that anymore.  
> Ah, ok. That makes sense. Why was it changed?

---

<div class="post-metadata">

**Author:** ![regularfry](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/45deac/32.png) [@regularfry](https://www.ruby-forum.com/u/regularfry)\
**Post date:** [June 26, 2006, 1:07pm UTC](https://www.ruby-forum.com/t/string-string/64361/6 "2006-06-26T13:07:27Z")

</div>

I’d really like similar behavior to be added back in. For example,  
converting to a Regexp, yes, but instead: ‘foo’ =~ ‘o’ would convert  
‘o’ such as: Regexp.new(Regexp.escape(‘o’))
