Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

非欲張りな量指定子をつかうと、パターンマッチの範囲を限定できる

非欲張りな量指定子をつかうと、パターンマッチの範囲を最初のものだけに限定することができます。
局面によっては非常に有用です。

実際のところ

たとえば、次のようなhtml文章があったとします。
ここから最初のタグ内容を抽出するケースを考えます。

const str = "<ul><li>a</li><li>b</li></ul>"

通常の”.+”であれば、まぁ、全部キャプチャしちゃいますね。

rgx = /<(.+)>/
rgx.exec(str)
/*
[ '<ul><li>a</li><li>b</li></ul>',
  'ul><li>a</li><li>b</li></ul',
  index: 0,
  input: '<ul><li>a</li><li>b</li></ul>' ]
*/

ここで、非欲張りな量指定子……という奴を使うと、簡単に目標を達成することができます。

rgx = /<(.+?)>/
rgx.exec(str)
/*
[ '<ul>', 'ul', index: 0, input: '<ul><li>a</li><li>b</li></ul>' ]
*/