正規表現 最短マッチ
最短マッチ
躓くことが多いのでメモ。
最短マッチを考える際には通常マッチから考えるとわかりやすい。
- 通常マッチは一番長いパターンをマッチ
- 最短マッチは一番短いパターンをマッチ
通常マッチは一番長いパターンと認識することが重要
例) テキスト例:「hoge」「hoge2」
ケース1 通常マッチケース /「.+」/ →この場合 「 と 」の範囲をマッチ。 テキスト例では「と」が一番長い範囲をマッチさせます。
ケース2 最短マッチケース /「.+?」/
→この場合 「 と 」のパターンの最短ケースを マッチさせます。 ポイントは量指定子(?や*)の前に? をつけることです。 (量指定子はなれるまであまり考えなくては良いかも)
hoge = "「hoge」「hoge」" puts hoge.scan(/「.+」/)[0] #→["「hoge」「hoge2」"] puts hoge.scan(/「.+?」/)[0] #["「hoge」"]