目次
概要
業務で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開発まとめ