简体   繁体   中英

Ruby and Cucumber - What does this mean? “([^”]*)"$/

I am just trying to figure out what the below means in Ruby.

"([^"]*)"$/   

I have the following code sample in Ruby using cucumber at the moment:

require "watir-webdriver"
require "rspec/expectations"

Given /^I have entered "([^"]*)" into the query$/ do |term|
   @browser ||= Watir::Browser.new :firefox
   @browser.goto "google.com"
   @browser.text_field(:name => "q").set term
end

When /^I click "([^"]*)"$/ do |button_name|
   @browser.button.click
end

Then /^I should see some results$/ do
  @browser.div(:id => "resultStats").wait_until_present
  @browser.div(:id => "resultStats").should exist
  @browser.close
end

I understand at the moment that it is doing a logic check that a button has been clicked. I did a bit of research around and found the following for symbal meanings in Ruby (as I am new to Ruby)

? = method returns a boolean value.   
$ = global variable   
@ = instance variable   
@@ = class variable.   
^ = bitwise XOR operator.   
* = unpack array 

I cannot see to find what the command does. I am trying to clarify exactly how functions are linked to variables and I think this is the final clue for me.

Many thanks in advance for any help.

It's a regular expression. The expression is contained between the "/" characters.

By way of an example and using your code:

/^I have entered "([^"]*)" into the query$/

is interpreted as a string that :

  • Matches the beginning of the line (^)
  • Matches "I have entered"
  • Matches a single quote
  • (") Matches everything that is not a quote ( ([^"]*) )
  • Matches " into the query"
  • Matches a single quote (")
  • Matches the end of the line $

See http://www.tutorialspoint.com/ruby/ruby_regular_expressions.htm for more information on Ruby and Regular expressions.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM