JavaScript

正規表現のメモ|自分用

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

■正規表現における量指定子と使用例〔基本パターン+最小マッチ〕|bregonig.dll Ver.4.20 with Onigmo 6.2.0にかんしては完成

【1】+:1回以上の繰り返し〔貪欲〕

  • 正規表現:a+
  • 対象文字列:aaab
  • bregonig.dll Ver.4.20 with Onigmo 6.2.0でのマッチ結果:aaa 👉aが1回以上続く部分に、できるかぎり多くマッチするかたちで、マッチする。

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

  • 正規表現:ba*
  • 対象文字列:bxyzbaxyzbaaxyz
  • bregonig.dll Ver.4.20 with Onigmo 6.2.0でのマッチ結果〔全体検索時〕:bbabaa 👉aが0回でもマッチするため、bの直後にaが【あってもなくても】=【0回以上であるなら】bにマッチする〔aが0回〕。bの後にaが1回ならba、2回ならbaaと、aが続く分だけマッチする。
  • bxyzbaが0回〕
  • baxyzbaaが1回〕
  • baaxyzbaaaが2回〕

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

  • 正規表現:ba?
  • 対象文字列:bxyzbaxyzbaaxyz
  • bregonig.dll Ver.4.20 with Onigmo 6.2.0でのマッチ結果〔全体検索時〕:bbaba 👉aが1回あればbaに、aがなければbだけにマッチする〔aが0回の場合〕。baaの部分では、baまでがマッチし、残りのaにはマッチしない。
  • (b)xyzbaが0回〕〔半角丸括弧内文字列にマッチ〕
  • (ba)xyzbaaが1回〕〔半角丸括弧内文字列にマッチ〕
  • (ba)axyzba〔最初のaのみマッチ〕〔半角丸括弧内文字列にマッチ〕

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

  • 正規表現:a{3}
  • 対象文字列:aaabaaa
  • bregonig.dll Ver.4.20 with Onigmo 6.2.0でのマッチ結果〔半角丸括弧内文字列にマッチ〕:(aaa)baaaaaab(aaa) 👉 a がちょうど3回連続している部分にのみマッチ。

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

  • 正規表現:a{2,4}
  • 対象文字列:aaaaab
  • bregonig.dll Ver.4.20 with Onigmo 6.2.0でのマッチ結果〔半角丸括弧内文字列にマッチ〕:(aaaa)ab

【5-1】{0,n}:0回以上、n回以下の繰り返し〔{,n}bregonig.dll Ver.4.20 with Onigmo 6.2.0では無効な表記〕

  • 正規表現:a{0,2}
  • 対象文字列:aaa
  • bregonig.dll Ver.4.20 with Onigmo 6.2.0でのマッチ結果(全体検索時):(aa)a\r\naa(a)\r\naaa(\r\n)
  • [aが0回以上]は、何にでもマッチしてしまうので、{0,n}という表現は使う機会が少ないであろう。

【5-2】{m,}:m回以上の繰り返し〔{m,}bregonig.dll Ver.4.20 with Onigmo 6.2.0でも有効な表記〕

  • 正規表現:a{2,}
  • 対象文字列:aaaaa
  • bregonig.dll Ver.4.20 with Onigmo 6.2.0でのマッチ結果:aaaaa

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 正規表現:a{2,}?
  • 対象文字列:aaaaa
  • bregonig.dll Ver.4.20 with Onigmo 6.2.0でのマッチ結果: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日〔独立記念日〕で、建国から年目になります。

1776年7月4日に独立したアメリカ合衆国は今年<script>var genzai = new Date();document.write(genzai.getFullYear());</script>年7月4日〔独立記念日〕で、建国から<script>var genzai = new Date();document.write(genzai.getFullYear() - 1776);</script>年目になります。

【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 英文チェッカー

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

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

レンタルサーバ コントロールパネル

最安値.com(最安値ドットコム) [ネット通販の価格比較サイト]

Time.is

登録チャンネル マネージャ

履歴

Namechk | Username, Domain, and Trademark Search | Username Registration

書籍紹介ブログパーツ ヨメレバ

商品紹介ブログパーツ カエレバ

List of Extensions (Tue Mar 24 2020):


Add-on List-o-matic 9000 1.5
Helps create a list of all add-ons.

Open With 7.2.2
Chrome、Edge、Safari、またはOperaでウェブページをすばやくテストできます。

Adblock Plus - free ad blocker 3.8
YouTube™ 広告、ポップアップをブロックして、マルウェアを撃破!

Video Speed Controller 0.5.1
Speed up, slow down, advance and rewind any HTML5 video with quick shortcuts.

Snap Links 3.1.7
Select multiple links, checkboxes and other elements and act on them such as open them in new tabs or check/un-check them.

History Cleaner 1.2.3
Deletes history older than a specified amount of days.

Livemarks 2.7
Firefox 64以降にRSSライブブックマーク機能を復活させる。

Empty Cache Button 3.4
Cache clearing made easy. One click.

DownThemAll! 4.2.6
ブラウザ用マスダウンローダー

Top and Bottom scroll buttons 1.7.6
Adds scroll to Top and Bottom buttons on all sites

ShortcutKey2URL (WebExtensions) 4.2.0
ShortcutKey2URLは、頻繁にアクセスするサイトへ簡単にアクセスするための手段(ショートカットキー)を提供します。

ウェブページ全体をスクリーンショット - FireShot 0.98.97
ウェブページ全体をスクリーンショット撮影。PDF/JPEG/GIF/PNGでキャプチャ、編集、保存やアップロード、印刷、そしてOneNote、クリップボード、メールに送信できます。

Disconnect 5.19.3
Make the web faster, more private, and more secure.

Google Translator for Firefox 3.0.3.3
選択したテキストとページ全体をGoogle翻訳で翻訳します。

JavaScript Toggle On and Off 0.2.3
Toggle JavaScript engines (inline, data URL, remote, and external) on and off the easy way