【GAS】よく使う正規表現、間に挟まれた文字列のみを取得する、改行を含んで文字列を取得する 複数行にマッチする方法
Desktop Computer Stock photos by Vecteezy
みなさん、こんにちは!
そーちゃん(@black777cat)です。
今回はGASで個人的によく使う正規表現2つの紹介です。
タグなどの間に挟まれた文字列のみを取得する
function code_01(){
const text = '<a href= "https://www.amazon.jp/hz/wishlist/ls/1Z0X9ZM1D65A7" >欲しい物リスト</a>'
const befor_text = '<a href= "'
const after_text = '" >'
const regexp = new RegExp( '(?<=' + befor_text + ').*?(?=' + after_text + ')' )
const match_text = text.match(regexp)
console.log(match_text[0])
//結果:https://www.amazon.jp/hz/wishlist/ls/1Z0X9ZM1D65A7
}
肯定の先読み (?= パターン )
肯定の後読み (?<= パターン )
こちらの2つを使って間の文字列だけを取得します。
改行を含んで文字列を取得する
function code_02(){
const text = 'あいうえお\nかきくけこ\nさしすせそ'
const regexp = new RegExp( /あいうえお[\s\S]*?さしすせそ/)
const match_text = text.match(regexp)
console.log(match_text[0])
//結果:
//あいうえお
//かきくけこ
//さしすせそ
}
[\s\S]を使うと改行を含むすべたの文字列にマッチする文字列を取得できます。
正規表現で複数を検索する
function code_03(){
const text = 'あいうえおかきくけこあいうえお'
const regexp = new RegExp( /あいうえお/,"g") // g でグローバル(全体)検索
const match_text = text.match(regexp)
console.log(match_text)
//[ 'あいうえお', 'あいうえお' ]
}
これは正規表現の最後にオプションフラグgを追加することで対応できます。
フラグ | 説明 |
---|---|
d | 一致した部分文字列の位置を生成します。 |
g | グローバル検索を行います。 |
i | 大文字・小文字を区別しない検索です。 |
m | 複数行の検索です。 |
s | . を改行文字と一致するようにします。 |
u | "unicode" です。パターンを一連の Unicode コードポイントとして扱います。 |
y | 対象文字列の現在の位置から始まる部分に一致するものを探す「先頭固定」 (sticky) 検索を行います。 sticky のページを参照してください。 |
参考サイト
先読みと後読みを使ったパターンの記述
https://www.javadrive.jp/javascript/regexp/index14.html
ディスカッション
コメント一覧
まだ、コメントがありません