
スキルアップ
2021.01.27
給料が高い仕事の特徴や年収を調査。高収入を目指す方法も紹介
「給料が高い仕事に就きたい」「今の給料に不満がある」など、給料についての願望や悩みは、多かれ少なかれ、持っている方も多いのではないかと思います。この記事では、給料が高い仕事の業界や特徴、年収を上げるための具体的な取り組み […]
JavaScript
2017.11.08
String オブジェクトのreplace メソッドを使用して文字列の置換を行う場合、置換対象を指定する様々な方法があります。
今回は、メタ文字を使用したパターンで置換対象を指定する方法を紹介します。
1.メタ文字を使用したパターン
2.エスケープ文字
3.メタ文字一覧
正規表現では「+」は「加える」という意味ではなく、「1回以上の連続文字」を意味します。
このように、プログラムで、本来の意味とは異なる特別な意味を持たせた文字を、メタ文字といいます。
そして、正規表現を使う場合は、メタ文字を使って、文字のパターンを表します。
例えば、次のようなメタ文字があります。
メタ文字 意味 . 任意の1文字 *? 直前の文字が0文字以上続くもので、当てはまる中で最短のもの
このメタ文字でパターンを作り、次のように文字の置換を行います。
var str = "'1234','あいう','ab','',字"; var str2 = str.replace(/'.*?'/g, "A");
正規表現の後ろに記述する「 g 」は グローバルサーチという正規表現フラグで、指定した正規表現リテラルのパターンにマッチする全ての文字列を返します。
(正規表現の記述については、正規表現をご参照下さい。)
変数str2を出力すると、次のように表示されます。
メタ文字を使用して作った「 /’.*?’/g 」のパターンは、シングルコーテーションで囲まれた部分(空文字も含む)を意味しています。
「*?」で「 直前の文字が0文字以上続くもので、当てはまる中で最短のもの 」を表しますが、「*」のみの場合は、「 直前の文字が0文字以上続くもので、当てはまる中で最長のもの 」を表すので、「 var str3 = str.replace(/’.*’/g, “A”); 」として置換して、変数str3を出力すると、次のように表示されます。
「*」のみの場合は、「’1234′,’あいう’,’ab’,”」の一番外側のシングルコーテーションで囲まれている「1234′,’あいう’,’ab’,’」が、パターンが一致した置換対象とみなされます。
置換対象として、メタ文字自体を本来の意味で指定する場合、メタ文字の前に「 \(バックスラッシュ)」を付けて「 \* 」のように記述します。
「 \* 」は、「メタ文字ではない * 」を意味します。
この「 \ 」のように、特別な意味を無効にする文字を、エスケープ文字といいます。
メタ文字には、次のような種類があります。
. 任意の1文字 例)A.B → Aから始まってBで終わる 文字数が3の文字列
* 直前のパターンの0回以上繰り返し(最長一致) 例1)ABC*?→ AB、ABC、ABCCC など
例2)A.*B →?Aから始まってBで終わる 文字数が2以上の文字列+ 直前のパターンの1回以上繰り返し(最長一致) 例1)ABC+?→ ABC、ABCCC など
例2)A.+B →?Aから始まってBで終わる 文字数が3以上の文字列? 直前のパターンの0?1回繰り返し(最長一致) 例)ABC??→ AB、ABC
?|? |の左右の文字列のいずれか(?または?) [?] ?のいずれか1文字 例1)[ABC]?→ A、B、C のいずれか
例2)[A-C]?→ A、B、C のいずれか
例3)[0-9]?→?全角数字
例4)[A-Z]+?→?全角英大文字列
例5)[ぁ-ん]?→?ひらがな
例6)[ァ-ヴ]?→?カタカナ
例7)[ヲ-゚]?→?半角カタカナ
例8)[一二三四五六七八九十壱弐参拾百千万萬億兆〇]+?→?漢数字列
例9)[0-9A-F]{2}?→?0-9とA-Fのいずれかの2文字(2桁の16進数)[^?] ?に含まれない1文字 例1)[^ABC]?→ A、B、C 以外の1文字
例2)[^A-C]?→ A、B、C 以外の1文字
例3)[^\u\l]?→?半角英字以外^ 論理行頭 例1)^○ →?行頭の○
例2)^\x20+?→?行頭の半角スペースの連続
例3)^\n?→?空白行
例4)^.*$?→?行全体
例5)(置換前)^ (置換後)>\x20 → 行頭に「> 」を挿入$ 論理行末 例1)。$?→?行末の。
例2)^.*$?→?行全体\ 直後のメタ文字をエスケープ
(直後の文字を正規表現の記号(メタ文字)として扱わない)例)\\ → 文字の「\」
\n 改行文字
※CR+LF(制御コード 0x0d+0x0a)とLF(制御コード 0x0a)例1)\n?→?改行
例2)^\n?→?空白行
例3)(置換前)^\n (置換後)”” →?空白行を削除する\t タブ文字(制御コード 0x09) 例1)\t?→?タブコード
例2)[\x20\t]+?→?半角スペースかタブコードの繰り返し
例3)(置換前)\t (置換後)\x20\x20 →?タブコードを半角スペース2文字に置換\s 空白文字(半角スペース、\t、\n、\r、\f)すべて 例)\s?→?空白文字
\S 空白文字(半角スペース、\t、\n、\r、\f)以外すべて \x## 16進数
※#は0?9、a?f、A?Fのいずれか例1)\x41 → A
例2)\x20 →?半角スペース\b 語の区切り位置 例)\bam\b?→?amという単語
\B 語の区切り位置以外 例)\Bam\B?→?単語の途中にあるam
\d すべての半角数字 例1)\d?→?半角数字
例2)\d+?→?数字列
例3)\d{4}?→?4桁の数字
例4)\d{4,}?→?4桁以上の数字
例5)\d{1,4,}?→?4桁までの数字(1?4桁の数字)
例6)\d{4,10}?→?4?10桁の数字(最長一致)
例7)\d{4,10}??→?4?10桁の数字(最短一致)
例8)\d*[135791]\b →?奇数
例9)\b\d{1,3}(,\d{3})*\b →?桁区切りのカンマ付数字列
例10)\\\d{1,3}(,\d{3})*\b →?価格(先頭が「\」の桁区切り付数字列)
例11)(〒|ZIP:)\d{3}-\d{4} →?郵便番号
例12)0\d{1,4}-\d{1,4}-\d{4} →?電話番号
例13)0[89]0\d{8} →?携帯電話番号(ハイフンなし)
例14)\d{4}[/\.年]\d{1,2}[/\.月]\d{1,2}日? →?日付\D 半角数字以外すべて 例)\D?→?半角数字以外
\w すべての半角英数字とアンダースコア 例1)[\w.\-]+@[\w\-]+\.[\w.\-]+?→?メールアドレス
例2)https?://[\w/:%#\$&\?\(\)~\.=\+\-]+?→?URL\W 半角英数字とアンダースコア以外すべて \l 半角英小文字すべて 例1)\l?→?半角英小文字
例2)[\u\l]?→?半角英字
例3)[^\u\l]?→?半角英字以外
例4)\b[\u\l]+\b?→?英単語
例5)[\u\l\d]?→?半角英数字\L 半角英小文字以外すべて(英大文字、数字、全角文字などすべて) 例)\L?→?半角英小文字以外
\u 半角英大文字すべて 例1)\u?→?半角英大文字
例2)[\u\l]?→?半角英字
例3)[^\u\l]?→?半角英字以外
例4)\b[\u\l]+\b?→?英単語
例5)[\u\l\d]?→?半角英数字\U 半角英大文字以外すべて(英小文字、数字、全角文字などすべて) 例)\U?→?半角英大文字以外
\a アラーム(制御コード 0x07) \c# 対応するコントロール文字
※#はA-Zの半角英字のみ指定可例)\cV → Ctrl-V
\e エスケープ(制御コード 0x1b) \f 改ページ(制御コード 0x0c) \r リターン(制御コード 0x0d)
※CR+LFのCR部分にはマッチしない\v 垂直タブ(制御コード 0x0b) \Q?\E ?部分に含まれるメタ文字をメタ文字として解釈しない
(「\」でエスケープしなくてよい)例)\QC:\Program Files\MIW10\E?→ C:\Program Files\MIW10
(?i) 以降の英字の大文字と小文字を同一視する (?-i) 以降の英字の大文字と小文字を区別する 例1)(?-i)abcd → 小文字の abcd のみ
例2)(?i)ab(?-!)cd →?abcdという文字列(abは大文字小文字不問、cdは小文字のみ)(?) ・パターンのグループ
・置換文字列に引用する部分の指定例1)(AB)+?→ AB、ABABAB など
例2)(置換前)^(.+?,)(.+?,)(.+?,.+?,)(.+?,) (置換後)\1\4\3\2?→?CSVファイルの2列目と5列目を入れ替える(?:?) パターンのグループ 例)A(?:AB|CD)?→ AAB、ACD
*? 直前のパターンの0回以上繰り返し(最短一致) 例1)ABC*??→ AB
例2)<[hH][1-3].*?> →?見出しタグ開始(h1?h3)+? 直前のパターンの1回以上繰り返し(最短一致) 例1)ABC+??→ ABC
例2)\b[Ww]h.+?\b?→?whで始まる3文字以上?? 直前のパターンの0?1回繰り返し(最短一致) 例)ABC???→ AB
{min,max} 直前のパターンのmin回からmax回繰り返し(最長一致) 例1)ABC{3,5}?→ ABCCC、ABCCCC、ABCCCCC
例2)0\d{1,4}-\d{1,4}-\d{4}?→?電話番号
例3)\d{4}[/\.年]\d{1,2}[/\.月]\d{1,2}日??→?日付{min,} 直前のパターンのmin回以上繰り返し(最長一致) 例1)ABC{3,}?→ ABCCC、ABCCCC、ABCCCCC など
例2)\d{4,}?→?4桁以上の数字{num} 直前のパターンのnum回繰り返し 例1)ABC{3}?→ ABCCC
例2)\d{4}?→?4桁の数字{min,max}? 直前のパターンのmin回からmax回繰り返し(最短一致) 例1)ABC{3,5}??→ ABCCC
例2)\d{4,10}??→?4?10桁の数字(最短一致){min,}? 直前のパターンのmin回以上繰り返し(最短一致) 例)ABC{3,}??→ ABCCC
{num}? 直前のパターンのnum回繰り返し(最短一致) 例1)ABC{3}??→ ABCCC
・・・(?=?) 先読み肯定グループ
後方の文字列が?だった場合の・・・にだけ一致する例1)MIFES(?=9|10)?→ MIFES9、MIFES10 のMIFES部分
例2)ab(?=cd)?→?abcd の中の ab
例3)ab(?=cd|ef)?→?abcd か abef の中の ab・・・(?!?) 先読み否定グループ
後方の文字列が?ではない場合の・・・にだけ一致する例1)MIFES(?!9|10)?→ MIFES9、MIFES10 以外のMIFES部分
例2)ab(?!cd)?→?後ろが「cd」ではない「ab」(?<=?)・・・ 後読み肯定グループ
前方の文字列が?だった場合の・・・にだけ一致する例1)(?<=9|10)MIFES → 9MIFES、10MIFES のMIFES部分
例2)(?<=ab)cd →?abcd の中の cd
例3)(?<=ab|cd)ef →?abef か cdef の中の ef(?<!?)・・・ 後読み否定グループ
前方の文字列が?ではない場合の・・・にだけ一致する例1)(?<!9|10)MIFES → 9MIFES、10MIFES 以外のMIFES部分
例2)(?<!ab|cd)ef →?前が「ab」か「cd」以外の 「ef」
スキルアップ
2021.01.27
「給料が高い仕事に就きたい」「今の給料に不満がある」など、給料についての願望や悩みは、多かれ少なかれ、持っている方も多いのではないかと思います。この記事では、給料が高い仕事の業界や特徴、年収を上げるための具体的な取り組み […]
スキルアップ
2021.01.25
独学でプログラミングの勉強を始める社会人たちが続々と増えていますが、最もオススメな学習法は「まずは無料の学習サイトでプログラミングに触れてみること」。そこで本記事では、初心者におすすめのプログラミング学習サイトを国内外あ […]
スキルアップ
2021.01.25
この記事ではシステムエンジニア(SE)とプログラマ(PG)の違いをわかりやすく解説します。システム開発の流れを説明しながら具体的に携わる仕事内容や必要スキル、年収まで違いを比較していきますので、ぜひ参考にしてください。 […]
スキルアップ
2021.01.22
通勤せず、家で仕事ができたら理想的だと思いせんか?コロナ禍の今、在宅ワークに注目が集まっています。パソコンとインターネット回線があればどこでもできる仕事が増え、完全在宅を前提とした求人も多く目にするようになりました。ここ […]
スキルアップ
2021.01.22
大学生のうちにプログラミングスキルを身につけておくべきか悩んでいる方、エンジニアとして働くことに興味がある方はぜひご覧ください! 大学生でプログラミングを習得するメリット、おすすめのプログラミング言語&学習法、失敗しない […]
スキルアップ
2021.01.22
本記事では、給料やお金をもらいながらでもプログラミングを学べる方法や、未経験からでもエンジニアへの転職が可能な理由について紹介します。プログラミングスキルが未経験者の就職や転職において有利となる理由も解説。これからプログ […]
INTERNOUS,inc. All rights reserved.