0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【TypeScript】正規表現 \bと+ってなんだ メモ

Last updated at Posted at 2022-10-05

問題を解いていたらこんな問題が出てきた

文字列の中の数字の合計を計算してね。でも、数字として独立してないものは数として数えないよ。

文章中の数字を数えるだけなら…

const test = 'Dinner is fried chicken for 200 yen bought at 5pm!'
const arr = test.match(/[0-9]+/g);
console.log(arr);//[ '200', '5' ]
//数字を足す

まず、ここで「+」が出てきた
☆「+」ってなんだ??
直前の文字の1文字以上の繰り返しにマッチする /fe+ / だと "fe","fee"にマッチ。"eee"にはマッチしない。
参考:https://qiita.com/iLLviA/items/b6bf680cd2408edd050f

上のソースコードから「+」を抜いてみると

const test = 'Dinner is fried chicken for 200 yen bought at 5pm!'
const arr = test.match(/[0-9]/g);
console.log(arr);//[ '2', '0', '0', '5' ]

数字が一文字ずつ出力された

この例だと数字にマッチして数字が続いている限りは、抽出されるよということ(あってる?)

数字として独立していないものは抽出しないはどうすればいい??

今のままだと[200]と[5]が両方抽出されている
(テキストが5pmとなっていて[5]は独立していない)

調べているとこのような書き方を見つけた

const test = 'Dinner is fried chicken for 200 yen bought at 5pm!'
const arr = test.match(/\b\d+\b/g);
console.log(arr);//[200]
  • 「\d+」の部分だけ見てみる
    「+」は上記で記載した通り
    「\d」は数値にする=[0-9]と同じ
    ※「\D」にすると数字以外に一致になるらしい
    のようだ

  • 「\b」の部分だけ見てみる
    「\b」は単語の先頭と末尾に一致する
    参考:https://www.javadrive.jp/regex-basic/meta/index4.html

例えば

  • 単語の先頭が一致するか??
const test2 = 'abc def'
const arr2 = test2.match(/\ba/g);//aが先頭である場合のみ
console.log(arr2);[a]
  • 単語の末尾に一致するか??
const test3 = 'abc def'
const arr3 = test3.match(/f\b/g);//末尾がfである場合のみ
console.log(arr3);//[f]

再度、独立している数字のみ抜き出すコードを見てみる

const test = 'Dinner is fried chicken for 200 yen bought at 5pm!'
const arr = test.match(/\b\d+\b/g);
console.log(arr);//[200]

改めて見てみると

  1. 「\d+」となっているから、数値と一致するか
  2. 「\bxxxx\b」となっているから、先頭と末尾がxxxxと一致しているかどうか
  3. 組み合わせて、先頭が数字かつ末尾が数字になっているものだけを抽出
    していることが分かる
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?