dubstep
#1
Hi,
I would like to know how to do this:
Currently, I have this working
text = “Hello World”
if line =~ /^(?:Hello):\s+(.*?)$/
puts “Hello found”
end
Output:
Hello found
Now, I would like to define hello in a global variable
HELLO = “Hello”
text = “Hello World”
if line =~ /^(?:HELLO):\s+(.*?)$/
puts “Hello found”
end
-----> Now this causes error, anyone know how to fix this?
Thanks!!
and can anyone explain how this line works:
if line =~ /^(?:Hello):\s+(.*?)$/
h0ujun
#2
At first, check below points.
- Fix variable name “text” to “line”.
- HELLO is not a “grobal variable”, this name is a “constant”.
Next, try this code.
if /^#{HELLO}\s+.*$/ =~ line
puts "#{HELLO} found"
end
“(?:)” has other meanings in regex literals.
Use “#{expr}” for substitutions in string and regex literals.
Last, This documents for you.
http://ruby-doc.org/docs/ProgrammingRuby/html/language.html
h0ujun
#4
wait it doesn’t work so i changed it to this:
if /^(?:#{HELLO}):\s+(.*?)$/ =~ line
h0ujun
#5
“:” did not match the line “Hello World”,
then “/^(?:#{HELLO}):\s+(.*?)$/” is not match too.
Try this code
if /^(?:#{HELLO}):\s+(.*?)$/ =~ “Hello: World”
Appendix
I try to describe the pattern “/^(?:#{HELLO}):\s+(.*?)$/”.
-
“(?:)” has no meaning in this pattern
change to “/^#{HELLO}:\s+(.*?)$/”
-
“?” has no meaning in this pattern
change to “/^#{HELLO}:\s+(.*)$/”
-
“$” has no meaning in this pattern
change to “/^#{HELLO}:\s+(.*)/”
-
“(.)" set $1
change to "/^#{HELLO}:\s+./” if you were not using $1
-
“.*” has no meaning in this pattern
change to “/^#{HELLO}:\s+/”