2017-08-23 6 views
0

Rubyのコードを見ていないようです。私は何とかCustomer-Level Templatesのダッシュ文字が([\w\s]+)によって無視されていると思う。それは全体Customer-Level Templatesをつかむことができるように正規表現は何ですか?Rubyの正規表現は `dash`

答えて

2

あなたは文字クラスに-を追加する可能性があります。

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

Rubular testを参照してください。

それともそれがさらに一般的な可能な限り少なく、改行文字以外の任意の0+文字を一致させるために.*?を使用して行います。

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

another Rubular testを参照してください。

ルビーでは、^$のマッチラインの境界に注意してください。 文字列と一致する必要がある場合は、^\A$と置き換え、\zのアンカーで置き換えます。

+0

範囲を定義するのに使用されているのとは対照的に、ハイフンを文字クラスの先頭または末尾に配置する必要があります。 '' az '[/ [ - :^] /]#=> " - " 'と' 'az" [/ [:^- ] /]#=> " - " 'これは '' - '#=> 45'、 '':'。ord => 58'、' '^ ord ord = = 94'、' 'a'.ord => 97'です。また、 '' - ''が 'nil'の範囲を示すときには、奇妙な結果を得ることもできます(' r '' '' .. ':'; r.class#=> Range; r.size#=> nil') : '' az '[/ [^ - :] /]#=>' a''。 –

+0

@CarySwoveland: '/ [^ - :] /'正規表現は、 '' [^ - :] '否定された文字クラス](つまり、 http://www.regular-expressions.info/charclass.html#negated)は、リテラル '-'と': '以外の文字にマッチします。言い換えれば、 ' - 'が文字クラスの開始位置にあるので、この正規表現には範囲がありません(文字クラスの開始は '['(正の場合)または '[^'の後( –

+0

Ha!私は森の木を見ることができませんでした:私はカラットを単なる私の範囲を作るために使われた文字と考えていましたが、空の範囲が例外を発生させるのはもっと意味があります: 'SyntaxError:empty range charクラス 'の中にあります。 –