~Linux、MySQLからAJAXまでTypeScriptで文字列のマッチングTypeScriptで正規表現などを使って文字列をマッチングさせてデータを抽出する方法を確認しました。ここでは、HTMLのテーブルデータ内からデータを抽出する場合を例に確認しています。※目次をクリックすると目次の下部にコンテンツが表示されます。・複数行文字列や文字列内挿機能(${expression})を使用できる。MDN●正規表現でパターンマッチして文字列抽出1Stringクラスのmatchメソッドを使用(部分文字列を抽出する場合は要注意)〇str.match(regexp)https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/match・全てのマッチを含む配列及び括弧内で捕獲された結果の配列、又はマッチが見つからなかった場合はnullを返す。・正規表現がgフラグを含んでいる場合、マッチのすべてを含む配列を返す。この場合、正規表現内に丸括弧を指定し部分文字列を抽出しようとして出来ないようなので要注意。class="#class3">リンク3</a>上記サンプルデータ内には三つのリンクタグが含まれているので、[“1つ目のリンクタグ”,”2つ目”,”3つ目”]の配列がリターンされる。2正規表現でgフラグをつけて部分文字列を抽出する場合Stringクラスのmatchメソッドでは出来ないので、RegExpのexecメソッドを使用する。〇regexp.exec(str);https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec・マッチが成功した場合配列を返し、正規表現オブジェクトのプロパティを更新する。・マッチが失敗した場合は、nullを返す。・gフラグを使用する場合、同じ文字列で成功するマッチを見つけるためにexecメソッドを複数回使うことができる。そのときの検索は、正規表現のlastIndexプロパティで指定された、strの部分文字列から開始される。・マッチした文字列の中からさらに部分的に文字列を抽出する場合は正規表現に丸括弧を指定する。console.log(`href:${result3[1]},リンク名:${result3[2]}`);}↓href:#href1,リンク名:リンク1href:#href2,リンク名:リンク2href:#href3,リンク名:リンク3改行文字を含めてマッチング正規表現に”m”フラグを指定すると”.”が改行文字にもマッチするようになる言語もあるが、JavaScriptではマッチしない。“.”の代わりに[\s\S]などを使用する。個のホワイトスペース文字にマッチする。・\Sホワイトスペース以外の1文字にマッチする。flags])https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replace・文字列中でpatternにマッチする部分全てを文字列replaceで置き換えた文字列を生成して返す。・サンプルデータ内から”tbodyタグ内の文字列を部分文字列で抽出。・数値データ以外の不要なタグ、改行、スペースなどの文字列を除去。上記4)の例では、STRリテラルに対するmatchメソッドの結果(配列)に対して、配列に対する参照、replaceメソッドを実行しています。チェックなどの方法のいくつかを示します。1ArrayオブジェクトのisArrayメソッドhttps://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/isArrayオブジェクトが配列であればtrueを、そうでなければfalseを返す。{・・・2typeofhttps://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/typeof・評価を行われないままの状態のオペランドのデータ型を示す文字列を返す。・文字列(プリミティブ)を評価した場合は、”string”を返すので、文字列の判定ができる。Stringオブジェクトの場合は、”object”を返すので要注意。Stringオブジェクトの判定をする場合はinstanceofメソッドなどを使用する。3instanceofhttps://developer.mozilla.org/ja/docs/JavaScript/Reference/Operators/instanceof・objectのプロトタイプチェインでconstructor.prototypeの存在を確認する。・以下のようにしてStringオブジェクトの判定ができる。返すただし、文字列の場合はfalseを返すので要注意。"");正規表現を使ってパターンマッチして真偽の判定RegExpのtestメソッドを使用する。〇regexObj.test(str)https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test・正規表現と対象の文字列の間のマッチを調べるための検索を実行し、結果を示す真偽値を返す。console.log(`${a_td[0]}の男は${a_td[1]}人、女は${a_td[2]}人、合計${a_td[3]}人です。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。