<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -246,16 +246,19 @@ module Siren
     module Equal
       def value(expr1, expr2)
         return expr1 == expr2 unless expr2.respond_to?(:gsub)
-        expr2 = expr2.gsub('*', '.*').gsub('?', '.')
-        expr1 =~ %r{^#{expr2}$}
+        expr1 =~ %r{^#{Match.convert(expr2)}$}
       end
     end
     
     module Match
       def value(expr1, expr2)
         return expr1 == expr2 unless expr2.respond_to?(:gsub)
-        expr2 = expr2.gsub('*', '.*').gsub('?', '.')
-        expr1 =~ %r{^#{expr2}$}i
+        expr1 =~ %r{^#{Match.convert(expr2)}$}i
+      end
+      
+      def self.convert(string)
+        string.gsub(/([\.\+\[\]\{\}\(\)\^\$])/) { &quot;\\#{$1}&quot; }.
+               gsub('*', '.*').gsub('?', '.')
       end
     end
     </diff>
      <filename>lib/siren/json_query_nodes.rb</filename>
    </modified>
    <modified>
      <diff>@@ -129,7 +129,7 @@ class SirenTest &lt; Test::Unit::TestCase
         {:key =&gt; [9,5,7], :val =&gt; 1..8})
   end
   
-  def test_wildcards
+  def test_string_matching
     assert_equal [&quot;Sayings of the Century&quot;, &quot;The Lord of the Rings&quot;],
         Siren.query(&quot;$.store.book[? @.title = '* of the *'][= title]&quot;, fixtures(:store))
     
@@ -144,6 +144,8 @@ class SirenTest &lt; Test::Unit::TestCase
         
     assert_equal [],
         Siren.query(&quot;$.store.book[? @.title = '? of the ?'][= title]&quot;, fixtures(:store))
+    
+    assert_equal '302 [QSA,L]', Siren.query(&quot;$[? @ = '302 [QSA,L]'][0]&quot;, ['302 [QSA,L]'])
   end
   
   def test_bookstore</diff>
      <filename>test/test_siren.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>d98b2393117ef2c58c635a5e8fe084347782c03e</id>
    </parent>
  </parents>
  <author>
    <name>James Coglan</name>
    <email>jcoglan@googlemail.com</email>
  </author>
  <url>http://github.com/jcoglan/siren/commit/515687122c70492bb11085654a4892b304dbdc29</url>
  <id>515687122c70492bb11085654a4892b304dbdc29</id>
  <committed-date>2009-07-07T05:37:22-07:00</committed-date>
  <authored-date>2009-07-07T05:37:22-07:00</authored-date>
  <message>Escape regex-related characters in string literals.</message>
  <tree>7b6a727a05c55839a899b15fb3f9beab22a423eb</tree>
  <committer>
    <name>James Coglan</name>
    <email>jcoglan@googlemail.com</email>
  </committer>
</commit>
