はてなキーワード: 正規表現とは
最近UserScriptを書くことに目覚めて、不便なWebサイトをちょっと改造して好みにするのにハマってる
例えば「辞書系のサイトなのにページを開いた瞬間から入力欄にカーソルがあってないのがいや」とか、そういう細かい点をこちらで勝手に改修するするような感じね
で、増田において「この人記事に対して毎回○○って反応つけてるけど面白いと思ってやってんのかな? 面白いと思ってやってんなら致命的に自分とセンスが合わないから消したいし、面白いと思ってないならただの害悪だから消したいな」と思うことがあるわけですが、そういった異なる価値観に対して自動的に適切な距離を置くためのスクリプトを作ったのでメモがてら貼り付けておきます
// ==UserScript== // @name ますだどくさいスイッチ // @namespace Violentmonkey Scripts // @match https://anond.hatelabo.jp/2* // @grant none // @version 1.0 // @author anond // @description description // ==/UserScript== (async () => { // ここにNGワードをどんどん追加する // 基本は文字列、文字列で引っ掛けにくいなら正規表現でもいい const keywords = [ "あえいうえおあお", ]; const checkedMarker = `data-a${Math.random().toString(36).slice(-8)}`; const query = `div[id^="excerpt-"]:not([${checkedMarker}]`; const delTree = () =>{ const elems = [...document.querySelectorAll(query)]; for(const elem of elems) { const textContent = elem.textContent; if(keywords.some((x) => (typeof x === "string") ? textContent.includes(x) : x.test(textContent))) { const parentContainer = elem.closest("li"); parentContainer?.remove(); } else { elem.setAttribute(checkedMarker, "true"); } } }; delTree(); const mo = new MutationObserver(delTree); mo.observe(document.body, { childList: true, subtree: true }); })();
keywordsを増やして君だけのどくさいスイッチを育ててね!
(追記)
最近コンピューターサイエンスがプログラマーに必要か否かみたいな話が上がっているが、そもそもコンピューターサイエンスって何だよ。どこまでの範囲をさしてんの?
ググって出てきた情報を整理しただけなので詳しい人、補足・訂正よろしく!
https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf
CS2013はACM/IEEE-CSによるカリキュラム標準。
ACM(計算機協会)はコンピュータ分野全般の国際学会、IEEE-CSはIEEE(米国電気電子学会)の中にあるテクニカルソサエティ。
https://www.ipsj.or.jp/12kyoiku/J07/20090407/J07_Report-200902/4/J07-CS_report-20090120.pdf
J07-CSは一般社団法人情報処理学会がCC2001CSをベースにアレンジを加えたカリキュラム標準。今はCS2013を反映したJ17-CSがあるらしいけどその辺は良く分からん。
https://www.ipa.go.jp/files/000024060.pdf
J07ーCSから抜粋。CS2013と比較するとナレッジエリアがあったり無かったり。
はてブのホットエントリ(総合)で月内に数多く[あとで読む]タグを集めたエントリ
312あとで/1768users 漫画で学ぶNISAとiDeCo|資産形成のポイントを解説|日経電子版
243あとで/1598users 45分間で「ユーザー中心のものづくり」ができるまで詰め込む | Yoshiki Hayama | slideshare
233あとで/1752users 見積・提案書に書いておくと不幸を減らせる前提条件 | Atsushi Nakamura | Zenn
215あとで/1290users サイバーエージェントが公開した“300ページ級のUnity技術書”がスゴい!しかも誰でも無料で読める|Unity Japan(ユニティ・テクノロジーズ・ジャパン)|note
210あとで/1775users なぜ投資をさっさと始めないのか - 本しゃぶり
209あとで/1465users 「何を言っているのか分からない」と言われないための「伝え方」のノウハウ - Qiita
196あとで/1631users 引越しが決まったらやるべきことのあれこれがめっちゃ参考になると話題「ありがてぇ…」補足あり | Togetter
194あとで/1830users やばすぎるAI画像生成サービス「Stable Diffusion」始まる。 【簡単解説 & 応用 & Prompt付生成事例集】|やまかず|note
189あとで/1680users 鈴木孝佳|姿勢改善オンラインレッスン on Twitter: "「あれこれストレッチ面倒だから1個教えてくれ」に対する解はこれです。「世界で最も偉大なストレッチ」と名前がつくだけあって、フルコンボ感ある。 https://t.co/UbfDw4F8SN"
187あとで/1623users 相手に動いてもらえないのは、一言目で“地雷”を踏んでいるから 仕事でも私生活でも役に立つ、人を動かす「伝え方」の極意 | 高橋浩一、荒木博行 | logmi
184あとで/948users Amazon VPCを「これでもか!」というくらい丁寧に解説 - Qiita
168あとで/919users 「リーダーの作法」マネジメントに限らず、エンジニアとして仕事の作法について書かれた良書 | hurutoriya
161あとで/1231users スタンフォード大学が無料で提供している英語プログラムがすごすぎる...様々な高校生向け教育プログラムをまとめました | Togetter
161あとで/1444users Seiya on Twitter: "クイーンズランド大学が開発したHIITがすごい。HIIT WBというエクササイズで、たった4分間の運動で30分の有酸素運動を遥かに凌ぐ効果を発揮する。心肺機能と筋肉量の増加、脂肪減まで期待でき、抗老化に繋がる。動画をそのまま真似し… https://t.co/FWvRp0RAaR"
159あとで/1503users 精度はGoogle翻訳を越える… 無料の国産「TexTra」が地味にスゴイ | ビジネスジャーナル
156あとで/1582users 横浜中華街いろいろ食べたくなるガイド|47AgDragon(しるどら|note
155あとで/736users 設計の考え方とやり方 | 増田 亨 | SpeakerDeck
151あとで/1290users なぜ日本の郊外には「タダ同然の住宅地」が大量にあるのか…「限界分譲地」という大問題を告発する 無責任の体系によって「都市の荒廃」が進んでいる | PRESIDENT Online
151あとで/1225users 『りぼん』編集部が作った「生理カンペキBOOK」が永久保存版すぎる。無料公開した思いを聞いた | HUFFPOST
147あとで/1209users Seiya on Twitter: "自宅にこもり切りの超運動不足の方、筋トレ超初心者の方へ。まずは2分だけ動画の真似をしてみて欲しい。難易度は低いが、鈍り切った体に刺激が入り、眠っていた身体の活力を取り戻すキッカケになると思う。 「独房式・脂肪燃焼全身サーキット新… https://t.co/pMQHBJAlIA"
139あとで/1768users 世界変革の前夜は思ったより静か|深津 貴之 (fladdict)|note
133あとで/1188users 「酒場で見ず知らずの人と親しく話し、取材する方法」を書いた朝日新聞記者の記述が面白かった(「ルポ トランプ王国2」) - INVISIBLE D. ーQUIET & COLORFUL PLACE-
128あとで/1292users 魔術として理解するお絵描きAI講座|深津 貴之 (fladdict)|note
127あとで/1379users 夫が裏垢で70人と不倫していたのが発覚した日の話①|ego@離婚協議中|note
126あとで/1146users 三谷幸喜さんが勧める「読書感想文」の書き方。「子どもの頃知りたかった」と反響呼ぶ | HUFFPOST
123あとで/811users キャリアアッププログラム「Google Career Certificates」日本版を開始 | Google Japan Blog
122あとで/1083users マルク on Twitter: "元銀行員として伝えたい。日銀に金融庁、FP協会に財務省。エリートが作ったお金を学ぶサイトが超有益。給与明細から投資、保険にクレカ、インフレやつみたてNISA、仮想通貨まで。小学生から、わかったつもりの大人も。もちろん0円。各資料で… https://t.co/rZ6zflv5HK"
121あとで/1298users 安倍晋三元総理とは何者だったのだろうか(田中良紹) - 個人 - Yahoo!ニュース
121あとで/1241users 【ドドンッ!】有名YouTuberが使ってる『効果音ラボ』の実態に迫る | ジモコロ | イーアイデム
116あとで/679users 正規表現の先読み・後読み | USAMI Kosuke | Zenn
勝手に tampermonkey とかに突っ込んで使ってヨロ
スクリプト保守とかするつもりないから、保守とかするつもりのあるパワーの溢れた人が
これ参考とかにしてもっとかっちょよくしたのを greasy fork あたりに公開してくれ
そしたら俺もそれ使う
localStorage.hatebu_ng_word_list に非表示のトリガーになる文字列を|区切りで登録する。
localStorage.hatebu_ng_word_list = "池田信夫|フェミ|弱者男性|やまもといちろう"
大なり小なり(>)が実体参照で表示されるのはよくわからん。使う人で適宜コードを直してくれ。
// ==UserScript== // @name はてブの一覧NG記事非表示 // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author masuda // @match https://b.hatena.ne.jp/* // @icon https://www.google.com/s2/favicons?sz=64&domain=hatena.ne.jp // @grant none // ==/UserScript== (function() { 'use strict'; if (!localStorage.hatebu_ng_word_list) { return; } console.log("はてブの一覧NG記事非表示", localStorage.hatebu_ng_word_list); /* * 例: * localStorage.hatebu_ng_word_list = * "池田信夫|フェミ|弱者男性|やまもといちろう|togetter.com"; */ let words = localStorage.hatebu_ng_word_list.split('|').map(w => new RegExp(w)); function entryDelete(els) { els.forEach(el => { let hit = false; words.forEach(w => { hit = hit|| w.test(el.textContent); }); if (hit) { el.remove(); } }); } // entrylist-header-main li 1つ目のアイテム entryDelete(document.querySelectorAll('.entrylist-header-main > li')); // 2つ目以降の li アイテム entryDelete(document.querySelectorAll('.entrylist-item > li')); })();
^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$
(出典:https://www.javadrive.jp/regex-basic/sample/index4.html)
0~255を判定している部分は置いといて、0~255を判定する記述が二つに分かれているのが気になる。
間に"."が挟まるからだ。
IPアドレスでは先頭に"."があってもおかしいし、末尾に"."があってもおかしい。
そのため、まずipアドレスの先頭三組("0~255".)だけドット付きで判定し、最後の一つだけドットなしで判定させている。
しかしそれなら、間に"."が挟まっても挟まらなくてもどっちでもマッチするように書いたあと、
その後、マッチした文字列の全体のフォーマットが正しいかを判定すればいいのではないか?
例えば以下のように。
^(?=^(\d+\.){3}\d+$)((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.?){4}$
0~255を判定する部分が一つになっている。にもかかわらず末尾に"."がついてしまうパターンがマッチしないのは
(または、途中の組で"."がつかないパターンがマッチしないのは)、
先読みで正しいフォーマットだけにマッチするようにして、それ以外の文字列をはじいているからだ。
正規表現が単純に短くなったし、「全体のフォーマットを判定する先読み部」と「各8bit+"\.?"の複雑な判定部分」に分けて描くことができた為、
先読みを使うことで、判定対象となる文字列の、「各部分判定の複雑さ」と「全体のフォーマットの判定の複雑さ」を分けることができる。
次に、0~255判定も複雑になっている。
正規表現では"0以上255以下"のような、複数桁にまたがる数の大小判定は出来ない。
例えば"2"と"10"では、数としては当然"10"が大きいが、辞書順で考えれば"2"の方が後に来る。
つまり、辞書順に並んだ文字列の中から、0~255の範囲だけにマッチするような正規表現を書かないといけない。そのため複雑になる。
しかし、0~255のような複数桁にまたがる数の大小判定ができないとしても、
全ての0~255に当てはまる厳密なパターンを書く((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]))より、
ある程度絞れる範囲だけ書いた後、除外したいパターンを書いて弾いた方が、読みやすく、意図が理解しやすくなるのではないか?
例えは以下のように。
^(?![3-9]\d\d)(?!2[6-9]\d)(?!25[6789])(?!0\d)\d{1,3}$
まず、上記正規表現末尾の\d{1,3}で、1~3桁のあらゆる数字列にマッチする。
するように記述されている。
「元々の0~255判定部分より複雑じゃん」と言われればそうなのだが、読み方が異なっている。
元々の正規表現は、
「250以上255以下、または、240以上249以下、または、100以上199以下、または、0~99」という読み方になる。
「3桁の数字列にマッチする、かつ、300以上999以下を除外、かつ、260以上299以下を除外、かつ、256以上259以下を除外、かつ、先頭が"0"の2ケタ以上の数字列を除外」という読み方になる。
個人的な意見になるが、「~、または、~」の連言では、「対象となる範囲の全体感と、除外されるべきパターン」が見えないため、どういった範囲の話をしているのかがピンとこない(場合もある)。
一方、「~、かつ、~~を除外」では、「対象となる範囲の全体感と、除外されるべきパターン」がそのまま書かれているため、対象文字列のどの部分のことを言及しているのか(比較的)理解しやすい(、と言いたい)。
ちょっと無理がある言い方か。
二つの変更を組み合わせたIPアドレス(IPv4)を判定する正規表現は以下になる。
^(?=^(\d+\.){3}\d+$)((?![3-9]\d\d)(?!2[6-9]\d)(?!25[6789])(?!0\d)(\d{1,3})\.?){4}$
"(?=..."や、"(?!..."で始まる部分は、「除外または許可されるべきパターンを指定している部分」であり、文字マッチを行っていない。
先読み部分を無視して、文字とマッチする部分だけに注目すると、この正規表現がマッチしようとしている文字列の全体感が把握できる。
((\d{1,3})\.?){4}
ブログやtwitterなど、ある程度まとまった文章を投稿する場において文末に『以上』と記載された文章を見ると違和感がある。
単発投稿である限り文末で文章が終わることは自明であり、わざわざ『以上』と書く意味が無いように思えたからだ。
文末に『以上』と書くとき、筆者はいったいどのような意図を持っているのだろうか?
まずは仮説を立てよう。
書類などで文頭に『記』、文末に『以上』と記載するフォーマットがある。これの『記』が省略されたかたちが由来か?
この「お堅い書類っぽさ」のニュアンスを本文に付与する意図があるのではないか、という仮説。
または手癖ということもありえる。
学術論文では日本語の文章でも句点ではなくピリオドを用いると聞いたことがある。
同じようにどこかの界隈では必ず文末に『以上』を記載するので他のシーンでも手癖でそれを書いてしまう、という仮説。
こういうのは使っている本人に聞く、もしくは用例を多く採取して文のニュアンスの傾向を調べたりするのがいいはずなんだが採取の難易度がそこそこ高い。
twitterの検索で文末の正規表現が使えたら楽だったのだが……
ttps://twitter.com/norinotes/status/1551818862341287936
# first
# second
はてぶ #を使ったコメント
というテキストに対して「増田」をキーワードに「# second」を取り出したい。
^#+ (.*)\n.*^増田
こんな感じにすると最長一致?になりfirstが取れてしまう。
途中に#を含まないようにと
.*を[^#]*にすると今度は「#を使ったコメント」がひっかかりマッチしなくなってしまう。
となると最短一致?をすればよさそうだがどこの*に?をつけてもダメ。
脳内で動きがシミュレーションできないからとりあえず書いてみたが解決策が出ない。
クマさんに話してもダメなら仲間に質問といっても個人開発じゃその相手も居ないし。
結局応用が利かない人間なんだなあ。
はてブのホットエントリ(総合)で月内に数多く[あとで読む]タグを集めたエントリ
590あとで/4204users 【詳しすぎる2週間】親の死亡後にまずやること(行動チェックリスト付) | まごころ相続コンシェルジュ
291あとで/1560users Google製のJavaScript教育ツール「Grasshopper」は基礎から学べて初心者に優しい!【どれ使う?プログラミング教育ツール】 | 窓の杜
272あとで/1859users 無料コーディング練習所 | 未経験からWebデザイナーへ!
220あとで/1327users 【翻訳】Googleのエンジニアがソフトウェア開発する時に必ず書くドキュメント「Design Docs at Google」 - BppLOG
201あとで/1017users 30 分でわかる!アルゴリズムの基本 | E869120 | SpeakerDeck
191あとで/1365users Wi-Fiトラブルの解決に便利! Windowsの隠れ便利機能「Wlan Report」を活用しよう【イニシャルB】 | INTERNET Watch
175あとで/888users Web開発者はもっと「安全なウェブサイトの作り方」を読むべき - Flatt Security Blog
171あとで/2593users (追記あり) 10億円資産ができたときに知っておいたほうがいいこと | anond.hatelabo.jp
164あとで/849users AWS初心者向けの教材まとめ、AWS日本法人が公開 | ITMedia
162あとで/1231users 【試し読み】書店員さんから大反響! 精神疾患を抱えた妻の介護と仕事…約20年にわたる苦悩の日々を綴った傑作ルポ『妻はサバイバー』|朝日新聞出版さんぽ|note
159あとで/935users 機械学習が独学できる日本語Youtube難易度別まとめ - Qiita
152あとで/961users 8時間を0.01秒に短縮 「アルゴリズムの素晴らしさが2分で分かる動画」が今すぐ勉強したくなる分かりやすさ | ねとらぼ
142あとで/889users 文春オンラインの記事分析を支える爆速ダッシュボードを作るまで|Shota Tajima|note
141あとで/2006users さよなら絵梨 - 藤本タツキ | 少年ジャンプ+
140あとで/1138users 新電力の中の人です。すべてをお話しします | anond.hatelabo.jp
136あとで/1094users 『ゴールデンカムイ』全話無料! | ヤンジャン!
135あとで/780users Docker創始者らが開発、ビルド/テスト/デプロイの自動化をポータブルにするツール「Dagger」登場。そのままローカルでもGitHubでもCircleCIでも実行可能に | Publickey
132あとで/575users フロントエンドエンジニアが知るべきキャッシュを理解する | カーーズ | Zenn
132あとで/1232users みんなが知ってる『ちょっとのコツでめっちゃ美味しくなる、楽になる』みたいなの教えて→全然知らなかった有益な情報が集まる | Togetter
131あとで/679users 【個人開発】正規表現を学ぶ狩りに出ませんか?モンスターを倒しながら正規表現が学べるゲーム「Regex Hunting」を作りました - Qiita
124あとで/1217users 先輩に「何かタメになる話してくださいよ〜」と無茶振りしたら『Language Reactor』という2言語字幕を同時表示できるChromeの拡張機能を教えてもらった | Togetter
124あとで/1254users 育休中に相方がめちゃくちゃ売れた|酒寄さん|note
120あとで/1114users Google Analytics(UA)が使えなくなるのはどのくらいヤバくて、いつまでに何をしたら良いのかの話。 - フジイユウジ::ドットネット
120あとで/598users 電子情報学特論:Chromiumのアーキテクチャを解き明かす | Kentaro Hara | Google Slides
119あとで/1242users 僕がたどり着いた最強パリパリチキンの焼き方→上手に焼くポイントも「鶏肉好きとしては是非とも取り入れたい」「最高のライフハック」 | Togetter
118あとで/866users 「全クリエイターに広まってほしい」文化庁が質問に答えるだけで『著作権契約書』が作れる超便利なツールを作っている | Togetter
116あとで/897users ちょっと触ったら休日が丸2日消失した 個人的2022年ベストゲーム「TUNIC」を全力で推したい | ねとらぼ
115あとで/798users 結局UMLとかシーケンス図とかAWSの図とかどれで描くと良いのよ?と思ったときの選択肢 - Qiita
112あとで/494users 『良いコード/悪いコードで学ぶ設計入門 』を出版します|ミノ駆動|note
109あとで/522users 予防に勝る防御なし - 堅牢なコードを導く様々な設計のヒント / Growing Reliable Code PHPerKaigi 2022
109あとで/1047users (続き)10億円資産ができたときに知っておいたほうがいいこと | anond.hatelabo.jp