fork download
  1. my_string = "SELECT * FROM users WHERE first_name = 'first name value'"
  2. my_string2 = "SELECT * FROM users WHERE first_name = 'first\"s name value'"
  3. my_string3 = "SELECT * FROM users WHERE first_name = 'first\\'s name value'"
  4.  
  5. rx = /first_name = (['"])((?:(?!\1)[^\\])*(?:\\.(?:(?!\1)[^\\])*)*)\1/i
  6.  
  7. puts rx.match my_string # => first_name = 'first name value'
  8. puts rx.match(my_string)[2] # => first name value
  9. puts rx.match my_string2 # => first_name = 'first"s name value'
  10. puts rx.match(my_string2)[2] # => first"s name value
  11. puts rx.match my_string3 # => first_name = 'first\'s name value'
  12. puts rx.match(my_string3)[2] # => first\'s name value
Success #stdin #stdout 0.05s 9776KB
stdin
Standard input is empty
stdout
first_name = 'first name value'
first name value
first_name = 'first"s name value'
first"s name value
first_name = 'first\'s name value'
first\'s name value