!~をmatch?に変える
最近!~とか正規表現関連のことばっかりの記述をしている気がする
とりあえずやらないといけないことは
の形をmacth?メソッドを使って書き直さなければならない
こういう風に書いてみた
$ ruby practice.rb
false
false
うまくいったっぽい
続いて
こんだけ試してみた
$ ruby practice.rb
false
false
true
true
true
false
true
true
あれ!?
ccだけ違う結果になった
どうやら
puts cc !~ /^abc/
の書き方はaが最初にあってbcがあれば通るようだ
puts cc.match?(/^[^abc]/)
こっちの方が良いコードっぽい
ruby 正規表現 否定
以前
https://tetsu-1999.hatenablog.com/entry/2019/10/22/190237
この記事で正規表現の否定についての記事を書いたが、どうやらトンチンカンなことを書いていたようです。
https://www.javadrive.jp/rubyregexp/character/index3.html
この記事に書いてあるように正規表現の否定をしたかったら[^aaa]のような記述をすれば良いらしい
試してみた
こんなコードを書いてみた
ruby practice.rb
0
こんな感じの実行結果になった。いけたかな
%w()と%W()とは
%w()はrubyでスッキリしたコードで文字列の配列が作成するための記法です。
https://www.sejuku.net/blog/46939#w
では%w()と%W()で具体的に何が違うのかというと
%W()は()内で式展開することができます。
では具体的にどういうことかというと
こうコードを打つと
このように出力されます
$ ruby practice.rb
hello
bye
hello
#{}
bye
hello
bye
bbはと#{} 出力されたのに対してccは空欄になりました。
このように%W記法は()内で式展開することが可能になります。
%w()と%W()とは
%w()はrubyでスッキリしたコードで文字列の配列が作成するための記法です。
https://www.sejuku.net/blog/46939#w
では%w()と%W()で具体的に何が違うのかというと
%W()は()内で式展開することができます。
では具体的にどういうことかというと
こうコードを打つと
このように出力されます
$ ruby practice.rb
hello
bye
hello
#{}
bye
hello
bye
bbはと#{} 出力されたのに対してccは空欄になりました。
このように%W記法は()内で式展開することが可能になります。
Rubyでの正規表現の否定
正規表現の否定をしたいと思い調べてみたところ
http://www-creators.com/archives/1827
このサイトがすぐにぶち当たった。
(?!PATTERN)
を使うことによってPATTERNを含まないという意味を持つ正規表現が作れるらしい。
実際に試してみた
このコードを書いて実行してみた
$ ruby practice.rb
true
true
んんっ!?
全く否定の意味を持っていない
結果として
このコードを打つと
$ ruby practice.rb
true
false
うまくいった!!
よくわからないがおそらく(?! PATTERN)はPATTERNを一つの塊としてみることくらいの意味しかないのではないかと思う。
ちょっとまだよくわからないなあ、完璧に理解してる人がいればコメント欲しいです
aa ? aa : nil と aa||nil の違い
rubocopでaa ? aa : nilのところを || に直せと言われた
どう一緒になるのか試してみた
書いたコード
出力結果
$ ruby practice.rb
false
false
true
false
aa
aa
hello
hello
bye
bye
bye
bye
bye
こうなった。
どうやらおんなじっぽい