0

Ruby1.9.3を使用しています。Rubyチュートリアルを実行するだけです。今、私は正規表現が機能し、出力も行っているステートメントに固執しました。\/しかし、演算子ロジックとの混同。

RegExp-1

Today's date is: 1/15/2013.(弦)

(?<month>\d{1,2})\/(?<day>\d{1,2})\/(?<year>\d{4})(表現)

RegExp-2

s = 'a' * 25 + 'd' 'a' * 4 + 'c'(弦)

/(b|a+)*\/ =~ s #=>( 表現)

今では、Ruby\/で演算子がどのように機能するかを理解できませんでした。=~

ここから誰かが私が同じことを理解するのを助けることができますか?

ありがとう

4

1 に答える 1

2

\エスケープ文字として機能します。このコンテキストでは、次の文字が通常の文字であり、特別な機能を果たしてはならないことを示すために使用されます。通常、/正規表現はによって予約されているため、正規表現は終了し/ます。ただし、その前に/\基本的に「これを使用するときに正規表現を終了するように指示しているわけではありません/。正規表現の一部として使用したいのです」と書かれています。

Leeが指摘したように、2番目の正規表現は無効です。特に、正規表現を適切なで終了しないためです/。最後をエスケープして/、それが単なる平文文字になるようにして、正規表現がぶら下がっています。それはやっているようなものstr = "helloです。

別の例として、通常^は正規表現で文字列の先頭を示すために使用されますが、これを行う\^と、正規表現で文字を使用するだけになります^

=~「正規表現は文字列と一致しますか?」一致する場合は、一致の開始のインデックスを返します。それ以外の場合は、を返しますnil。詳細については、この質問を参照してください。

編集:、、?<month>?<day>もの?<year>がグループ化されていることに注意してください。正規表現で少しブラッシュアップを使用できるようです。この付録をチェックして、さまざまな特殊文字が何をするかを確認してください。

于 2013-01-15T13:16:09.760 に答える