JavaScript

正規表現のメモ|自分用

●●● Windows環境再構築中につき、記事が工事中 ●●●

■ 正規表現における量指定子と使用例(基本パターン + 最小マッチ)

【1】+:1回以上の繰り返し(貪欲)

  • 正規表現:a+
  • 対象文字列:aaab
  • マッチ結果:aaa 👉 a が1回以上続く部分を、できる限り多くマッチします。

【2】*:0回以上の繰り返し(貪欲)

  • 正規表現:a*
  • 対象文字列:aaab
  • マッチ結果:aaa 👉 a が0回以上繰り返される部分にマッチ。何もない部分にもマッチ可能。

【3】?:0回または1回の繰り返し

  • 正規表現:a?
  • 対象文字列:aaab
  • マッチ結果(全体検索時):a, a, a, ""(空文字) 👉 各位置において a が1つあればマッチ。なければ空でもマッチします。

【4】{n}:ちょうどn回の繰り返し

  • 正規表現:a{3}
  • 対象文字列:aaabaaa
  • マッチ結果:aaa 👉 a がちょうど3回連続している部分にのみマッチ。

【5】{m,n}:m回以上、n回以下の繰り返し

  • 正規表現:a{2,4}
  • 対象文字列:aaaaab
  • マッチ結果:aaaa(貪欲なので最大限マッチ)

【5-1】{,n}:0回以上、n回以下の繰り返し({0,n} と同義)

  • 正規表現:a{,2}
  • 対象文字列:aaa
  • マッチ結果(全体検索時):aa, a

【5-2】{m,}:m回以上の繰り返し

  • 正規表現:a{2,}
  • 対象文字列:aaaaa
  • マッチ結果:aaaaa

■ 最小マッチ(非貪欲)指定付きの量指定子と使用例

〔1〕+?:1回以上、できるだけ少なくマッチ

  • 正規表現:a+?
  • 対象文字列:aaab
  • マッチ結果(全体検索時):a, a, a 👉 貪欲だと1回で aaa にマッチするが、最小マッチでは1文字ずつ分割されます。

〔2〕*?:0回以上、できるだけ少なくマッチ

  • 正規表現:a*?
  • 対象文字列:aaab
  • マッチ結果(全体検索時):"", "", "", "", ""(5つ) 👉 a を0回で済ませるのが最小なので、すべての位置で空文字にマッチ。

〔3〕??:0回または1回、できるだけマッチしない

  • 正規表現:a??
  • 対象文字列:aaab
  • マッチ結果(全体検索時):"", "", "", "", ""(5つ) 👉 貪欲な a? なら a にマッチするが、a?? は空文字優先。

〔4〕{n}?:ちょうどn回(※最小マッチの意味はない)

  • 正規表現:a{3}?
  • 対象文字列:aaab
  • マッチ結果:aaa 👉 {3} は「ちょうど3回」なので、最小/最大の概念は関係ない。? は無意味。

〔5〕{m,n}?:m回以上n回以下、できるだけ少なくマッチ

  • 正規表現:a{2,4}?
  • 対象文字列:aaaaa
  • マッチ結果:aa 👉 a を2〜4回の間で、最小(2回)だけマッチ。

〔5-1〕{,n}?:0回以上n回以下、できるだけ少なくマッチ

  • 正規表現:a{,3}?
  • 対象文字列:aaaaa
  • マッチ結果(全体検索時):"", "", … 👉 最小なので0回でマッチする位置が優先される。

〔5-2〕{m,}?:m回以上、できるだけ少なくマッチ

  • 正規表現:a{2,}?
  • 対象文字列:aaaaa
  • マッチ結果:aa 👉 a が2回以上の中で**最小(2回)**だけマッチ。

✅ 最後にポイントまとめ:

  • {n}? は構文的には正しいが、意味が変わらないため非実用的。
  • 実際の処理や抽出で「最小限に抑えたい」場合は、+?*?{m,n}? を多用。
  • パターンの設計では、データの構造(区切り文字・境界など)と合わせて使うことが重要。

必要に応じて、これらの正規表現を含むコード(Python、JavaScriptなど)やツール(例:grep、VS Codeの検索)での活用例も紹介できます。どの環境で使う予定ですか?

1776年7月4日に独立したアメリカ合衆国は、今年の独立記念日で建国から何年か?

1776年7月4日に独立したアメリカ合衆国は今年年7月4日〔独立記念日〕で、建国から年目になります。

1776年7月4日に独立したアメリカ合衆国は今年年7月4日〔独立記念日〕で、建国から年目になります。

【PC操作とデータ整理】ブックマークツールバー|ブックマークレット

URLの取得と文字置換

javascript:var gottenurl = location.href;var gottentitle = document.title;gottentitle = gottentitle.normalize("NFC");var newtitle = gottentitle.replace(/%E3%83%A8%E3%83%89%E3%83%90%E3%82%B7\.com%20\-%20(.*)%20%E9%80%9A%E8%B2%A9%E3%80%90%E5%85%A8%E5%93%81%E7%84%A1%E6%96%99%E9%85%8D%E9%81%94%E3%80%91/g,%22$1%22);var newtitle = newtitle.replace(/ - YouTube/g,%22%22);var newurl = gottenurl.replace(/http\:\/\/localhost\:1313/g,%22%22);var newurl = newurl.replace(/https:\/\/benkyosukisuki.com/g,%22%22);var newurl = newurl.replace(/search\?.*\&q=/g,%22search?&q=%22);var newurl = newurl.replace(/\&stick=([^&|"]+)/g,%22%22);var newurl = newurl.replace(/\&ved=([^&|"]+)/g,%22%22);var newurl = newurl.replace(/\&biw=([^&|"]+)/g,%22%22);var newurl = newurl.replace(/\&bih=([^&|"]+)/g,%22%22);var newurl = newurl.replace(/\?frm_src=thumb_module/g,%22%22);var newurl = newurl.replace(/\&feature=youtu.be\&t=(\d+)m(\d+)s/g,%22%22);var newurl = newurl.replace(/time_continue=\d+\&/g,%22%22);var newurl = newurl.replace(/\/\/www.youtube.com\/watch\?v=(.{11})(.*)/g,%22//youtu.be/$1?t=00m00s%22);var newurl = newurl.replace(/\/\/www.amazon.co.jp\/.*\/dp\/(.{10}).*/g,%22//www.amazon.co.jp/dp/$1%22);var newurl = newurl.replace(/\/\/www.amazon.co.jp\/dp\/(.{10}).*/g,%22//www.amazon.co.jp/dp/$1%22);prompt('HTML link','%E2%96%A0<a href=%22'+newurl+'%22 target=%22_blank%22 rel=%22nofollow%22>'+newtitle+'</a><br>')();

引用

javascript:(function(){var%20d=document,q,c,t,_c,S=function(s){return%20String(s).replace(/[&<>]/g,function(m){return%20{'&':'\u0026amp;','<':'\u0026lt;','>':'\u0026gt;'}[m];});};q=S(d.selection?d.createRange().text:getSelection()).replace(/[\r\n]+/g,'<br%20/>');c=S(location.href);t=S(d.title);if(!q)return;var%20ta,cls,div=d.createElement('div');div.style.cssText='position:fixed;top:30px;left:20%;z-index:1000;border:solid%205px%20#aaa;margin:auto;background:#ddd;width:60%;';ta=d.createElement('textarea');ta.value='<p><fieldset><dl%20class=\u0022quote\u0022>\n%20<dd><blockquote%20cite=\u0022'+c+'\u0022%20title=\u0022'+t+'\u0022><p>'+q+'</p></blockquote></dd>\n%20<dt%20class=\u0022cite\u0022>\u5F15\u7528\u5143\u003A%20<a%20href=\u0022'+c+'\u0022%20target=\u0022_blank\u0022%20rel=\u0022nofollow\u0022>'+t+'</a></dt>\n</dl></fieldset></p>';ta.style.cssText='display:block;margin:20px%20auto%205px%20auto;width:96%;height:16em;';div.appendChild(ta);cls=d.createElement('input');cls.type='button';cls.value='%20Close%20';cls.style.cssText='padding:2px;text-align:center;width:8em;display:block;margin:5px%20auto;font:600%2015px%20arial;';div.appendChild(cls);_c=function(){var%20dv=this.parentNode;dv.parentNode.removeChild(dv)};cls.onclick=_c;d.body.appendChild(div);ta.select();})();

チェックマーク全入れ

javascript:(function%20(){var%20inputs%20=%20document.getElementsByTagName('input');for(var%20i=0;%20;%20i++){for%20(var%20j=0;%20j%20<%20inputs.length;%20j%20++)%20{var%20e%20=%20inputs[j];if%20(e.type%20==%20'checkbox')e.checked%20=%20true;}if(i%20<%20window.frames.length){try%20{inputs%20=%20window.frames[i].document.getElementsByTagName('input');}catch(e){}}else{break;}}})();

チェックマーク全切り

javascript:(function%20(){var%20inputs%20=%20document.getElementsByTagName('input');for(var%20i=0;%20;%20i++){for%20(var%20j=0;%20j%20<%20inputs.length;%20j%20++)%20{var%20e%20=%20inputs[j];if%20(e.type%20==%20'checkbox')e.checked%20=%20false;}if(i%20<%20window.frames.length){try%20{inputs%20=%20window.frames[i].document.getElementsByTagName('input');}catch(e){}}else{break;}}})();

Amazonから書籍横断検索

javascript:(function(){javascript:(%20function()%20{%20var%20title%20=%20document.getElementById(%22productTitle%22);%20var%20url%20=%20%22http://book.tsuhankensaku.com/hon/index.php?t=booksearch&q=%22%20+%20title.innerText;%20document.location=url;%20})();})();

AmazonのURL単純化

javascript:(function(){var%20a=document.getElementsByName(%22ASIN.0%22)[0]?document.getElementsByName(%22ASIN.0%22)[0].value:document.getElementsByName(%22ASIN%22)[0]?document.getElementsByName(%22ASIN%22)[0].value:%22ASIN\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f%22;location.href=%22https://www.amazon.co.jp/dp/%22+a})();

甘茶蔓

https://amachazl.com

サイトのブックマーク

カメラと画像キャプチャ – Netflix | パートナーヘルプセンター

ゆきんこの勉強法

HUGOサーバーエミュレータ

Speechnotes |ディクテーションメモ帳 

アナリティクス

Google 翻訳

Ginger 英文チェッカー

ローマ字⇔ひらがな⇔漢字かな交じり文 変換

ひらがな→カタカナ | 文字変換サイト(無料)|平仮名→片仮名