Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby正则表达式似乎看不到破折号`_Ruby_Regex - Fatal编程技术网

Ruby正则表达式似乎看不到破折号`

Ruby正则表达式似乎看不到破折号`,ruby,regex,Ruby,Regex,Ruby代码: Then /^I verify ([\w\s]+) table contains the following items on the page$/ do | page_table, table | ....... 测试: 当我运行测试时,它显示未定义的步骤。我想[\w\s]+可能会忽略客户级模板中的破折号字符。什么是正则表达式,它可以抓取整个客户级模板?您可以添加-到字符类: /^I verify ([\w\s-]+) table contains the following

Ruby代码:

Then /^I verify ([\w\s]+) table contains the following items on the page$/ do | page_table, table |
.......
测试:

当我运行测试时,它显示未定义的步骤。我想[\w\s]+可能会忽略客户级模板中的破折号字符。什么是正则表达式,它可以抓取整个客户级模板?

您可以添加-到字符类:

/^I verify ([\w\s-]+) table contains the following items on the page$/
见a

或者使用。*使其更通用?要匹配除换行符以外的任何0+字符,请尽可能少:

/^I verify (.*?) table contains the following items on the page$/

注意,在Ruby中,^和$匹配线边界。如果需要匹配整个字符串,请将“^”替换为\A,将$替换为\z锚点。

您可以将-添加到字符类中:

/^I verify ([\w\s-]+) table contains the following items on the page$/
见a

或者使用。*使其更通用?要匹配除换行符以外的任何0+字符,请尽可能少:

/^I verify (.*?) table contains the following items on the page$/


注意,在Ruby中,^和$匹配线边界。如果需要匹配整个字符串,请将“^”替换为\A,将$替换为\z锚点。

也许值得一提的是,在匹配字符类时,应将连字符放在字符类的开头或结尾,而不是用于定义范围。考虑AZ[[/-[^ ] /]=nIL,而AZ[[/-:^ ] /]=--和-Z[[/:^ -] /]=>。这是因为'-'=>45':'.ord=>58'^'.ord=>94和'a'.ord=>97。此外,当-表示nil范围r='^'..':'时,也可以得到奇数结果;r、 类别=>范围;r、 大小=>nil:a-z[/[^-:]/]=>a。Wiktor,你能解释一下最后的结果吗?@CarySwoveland:/[^-:]/regex与a-z字符串中的a匹配,因为a-z字符串与除文本和以外的任何字符匹配。换句话说,这个正则表达式中没有范围,因为-在字符类的开始处字符类的开始处在[如果是正值或之后][^如果是否定的。哈!我看不到森林中的树木:我认为克拉只是一个用于构建我的范围的字符。更合理的是,空范围会引发一个异常:SyntaxError:char类中的空范围。谢谢。也许值得一提的是,连字符应该放在字符的开头或结尾类,当它是匹配的,而不是用来定义一个范围。考虑AZ[[/-[^ ] /]=>-n-1,而AZ[[/-:^ ] /]=-和-Z[[/:^ -] ]=> -这是因为'-'=>45,‘:’:ORD=>58,‘^’。ORD=>94和‘A’。ORD=97。铒[/[^-:]/]=>“a”.Wiktor,你能解释一下最后的结果吗?@CarySwoveland:The/[^-:]/regex与a-z字符串中的a匹配,因为匹配的是除文本以外的任何字符-和:。换句话说,此regex中没有范围,因为-位于字符类的开始处。字符类的开始位于[如果是正的或之后][^如果是否定的。哈!我看不到森林中的树:我认为克拉只是一个用于构建我的范围的字符。更合理的是,空范围会引发一个异常:SyntaxError:char类中的空范围。谢谢。