2009-12-17 5 views

Répondre

28

C'est la bonne façon d'insérer une variable dans une expression régulière:

irb(main):001:0> a='Hi' 
=> "Hi" 
irb(main):002:0> b=/Not #{a}/ 
=> /Not Hi/ 

donc votre problème est probable que l'assertion échoue à cause d'un mauvais match. Vérifiez la valeur de @user et @some_text et essayer http://rubular.com de trouver une expression rationnelle correspondant

+1

regxPlayerVariable = »= * ? document \ .getElementById (# {pluginPlayeVariable}) 'dans ce que j'ai appliqué tout ci-dessus, mais ceux-ci ne fonctionnent pas – SSP

1

assert_match prend également une chaîne, comme

assert_match("blah blah", 'a string') 

que l'autre façon de faire ce que vous faites serait interpolation chaîne utilisateur

string_to_match = "blah blah #{@user}" 

assert_match(string_to_match, 'a string') 
9

S'il y a une possibilité de la chaîne @user contenant des caractères spéciaux regexp, vous devez modifier ceci:

/blah blah blah #{Regexp.escape(@user)}/ 
3

vous pouvez jeter un oeil à% r {}, par exemple: (. *?).

pattern = 'foo'
%r{#{pattern}_bar} =~ 'foo_bar_2000'

Questions connexes