Yuki's Tech Blog

仕事で得た知見や勉強した技術を書きます。

【Ruby】【TS】matchメソッドについてざっくりまとめてみた

目次

概要

業務でmatchメソッドを使う時があったのですが、パッと出なかったのでブログにまとめようと思います。

matchメソッド

Ruby

Rubyにおけるmatchメソッドは、String#matchです。実引数で指定した正規表現にマッチした場合、MatchDataクラスのインスタンスを返します(MatchDataクラスは、正規表現のマッチに関する情報を扱うためのクラスです)。マッチしなかった場合はnilを返します。MatchDataクラスのインスタンスに対してMatchData#to_sを実行すると、マッチした文字列全体を返します。

regex_pattern = /^\d{2}/

target = "123xyx"
second_target = "xyz"
p target.match(regex_pattern) # => #<MatchData "12">
p target.match(regex_pattern).class # => MatchData
p target.match(regex_pattern).to_s # => "12"
p second_target.match(regex_pattern) # => nil

TS

TSにおけるmatchメソッドは、String.prototype.match()です。引数には正規表現を指定します。gフラグをつけたグローバルサーチの場合、正規表現全体に一致したすべての結果を配列で返しますが、キャプチャグループは返しません。gフラグをつけない場合、最初に一致したものとそれに関するキャプチャグループを含んだ配列を返します。一致するものが見つからなかった場合、nullを返します。

■gフラグあり

const regexPattern = /\d{2}/g;
const target = "123xyx";
const secondTarget = "xyx";

console.log(target.match(regexPattern)); // => [ '12' ]
console.log(secondTarget.match(regexPattern)) // => null

■gフラグなし

const regexPattern = /\d{2}/;
const target = "123xyx";

console.log(target.match(regexPattern)); // => [ '12', index: 0, input: '123xyx', groups: undefined ]
console.log(secondTarget.match(regexPattern)) // => null

終わり

Rubyって正規表現で繰り返しマッチ(グローバルサーチ)できたっけと悩みました、、調べても結局できたのか分からないので、Rubyガッツリ学ぶときに調べてみます。

参考

String#match (Ruby 3.2 リファレンスマニュアル)

class MatchData (Ruby 3.2 リファレンスマニュアル)

【JavaScript】正規表現オプションの意味と使い方まとめ | PisukeCode - Web開発まとめ

String.prototype.match() - JavaScript | MDN

Regex Hunting