「角括弧」を含む日記 RSS

はてなキーワード: 角括弧とは

2023-05-20

LaTeXで、縦書き人文書のように全角括弧()級数下げをするマクロ

LaTeXで、縦書き人文書のように全角括弧()級数下げをするマクロを書いた。

テスト環境は、LuaLaTeX+jlreq

・「(」が来ると級数下げる

・「)」が来ると級数上る

・「()」のなかに入れ子の「()」が来た場合は、変更しない(本づくりのお作法

脚注内では「()」内も級数下げしない(本づくりのお作法

※ 「(」と「)」が対応してないと級数下げたまま、になってしま可能性があるので、ちゃんと合わせておくこと

\usepackage{relsize}\usepackage{newunicodechar}\newif\iffoot\footfalse\newcounter{parnest}\setcounter{parnest}{0}%()内の級数下げマクロ変数の準備(級数下げしたくない箇所は、()前後を\foottrue~\footfalseで括ること)

\let\origfootnotetext\footnotetext\renewcommand{\footnotetext}[2][]{\ifx\relax#1\relax \origfootnotetext{\foottrue #2 \footfalse}\else\origfootnotetext[#1]{\foottrue #2 \footfalse}\fi}\let\origfootnote\footnote\renewcommand{\footnote}[1]{\ifnum\ltjgetparameter{direction}=3\origfootnote{\foottrue #1 \footfalse}\else\origfootnote{\foottrue #1 \footfalse}\fi}%脚注コマンドを変更

\let\origendnotetext\endnotetext\renewcommand{\endnotetext}[2][]{\ifx\relax#1\relax \origendnotetext{\foottrue #2 \footfalse}\else\origendnotetext[#1]{\foottrue #2 \footfalse}\fi}\let\origendnote\endnote\renewcommand{\endnote}[1]{\ifnum\ltjgetparameter{direction}=3\origendnote{\foottrue #1 \footfalse}\else\origendnote{\foottrue #1 \footfalse}\fi}%文末脚注コマンドを変更

\makeatletter\chardef\my@J@kakkostart="FF08\newunicodechar{(}{\iffoot\my@J@kakkostart\else\addtocounter{parnest}{1}\ifnum\value{parnest}=1 \relsize{-0.5}\my@J@kakkostart\else\my@J@kakkostart\fi\fi}\makeatother%開くカッコは脚注外では級数下げ

\makeatletter\chardef\my@J@kakkoend="FF09\newunicodechar{)}{\iffoot\my@J@kakkoend\else\addtocounter{parnest}{-1}\ifnum\value{parnest}=0 \my@J@kakkoend\relsize{0.5}\else\my@J@kakkoend\fi\fi}\makeatother%閉じるカッコは脚注外では級数上げ(元に戻す)

2022-09-05

「stable diffusion」って、丸括弧( )で単語を囲むと影響度を弱めて、角括弧[ ]で囲むと強める?

コード読めって話なのだ・・・

正式にどこか書かれているわけではないのだけど、丸括弧( )で単語を囲むと影響度を弱められるらしい。

例: (cat)で、他のワードの影響度が大きくなる。[cat]で影響度が強まる。


2重、3重も取り敢えずエラーにはならない。

例:(((cat)))、[[[cat]]]


効果が出ていそうなのだが、seedを固定しても、微妙に変わってしまうので、自信がない。

2022-03-07

FSB内部告発文書(信憑性注意)

id:Vorspiel

Changelogを入れたら末尾が切れてしまった…Changelogはリプにします。https://anond.hatelabo.jp/20220308162009

--

Twitterで流れていた以下の文書翻訳したものです。

https://twitter.com/igorsushko/status/1500301348780199937

最初Twitterに流しましたが(https://twitter.com/Vorspiel2/status/1500677825044819971)、誤訳修正し、追加情報を入れて清書しました。

なお、この文書真正性について、まずこちらの評価をご参照ください。(イギリス情報サイトBellingcatの幹部Christo Grozev氏による)

https://twitter.com/christogrozev/status/1500196510054637569

以下はその翻訳です。

昨晩[日本時間3/5早朝]、FSB内部告発文書と称するものが公開された。そこには、ロシア軍ウクライナでの失敗と、今後数週間~数ヶ月におけるロシア惨状予測が記されていた。これが本物かは分からない—ウクライナは以前に、心理戦の一環として偽のFSB文書リーしたことがある。

だがこれはそれとは違うようだ: 情報源は信頼できるもので(gulagu.net創始者)、偽造にしては遥かに長い文書だ(長くなるほどボロが出やすくなる)。

私はこの文書を、知己のFSB職員2人(現職または前職)に見せた。2人とも、これは間違いなく同僚が書いたものだと判断した。彼等は結論のすべてには同意しなかったが、それはさておき。

文書こちら。一読の価値がある: https://www.facebook.com/vladimir.osechkin/posts/4811633942268327

内部告発というのが仮に真であったとしても、内容に虚偽が含まれている可能性にご注意ください。

更に、私はロシア語は分からないので、露→英訳時に意図的か否かを問わず誤情報が紛れ込んでいる場合にはそのままになります。この点について、ロシア語が理解できる方はチェックをお願いします。

以下本文です。

--

[冒頭は英訳者Igor Sushko氏のコメント。氏はウクライナ出身アメリカ育ちのレーシングドライバー]

以下は、現職のFSB分析官による、ロシア現状分析英訳したものである。長いスレッドになるので心して読んでいただきたい。シェア歓迎。全文で2000語以上になる。カーテンの裏で起きていることに対する高度な洞察であり、幅広い題材を含む。

文意を明確にするための補足を、必要に応じて括弧書きで加えている。[日本語訳時に、追加の補足を角括弧書きで入れている。] では始めよう:

[ここからが元文書の内容]

最近はろくに眠れていない。ほぼ24時間勤務で、頭に靄が掛かったような状態だ。過労なのだろうが、まるでシュール世界の住人になったような気分だ。

パンドラの箱は開いた—本当の世界規模の惨劇は今夏までに始まるだろう—全世界飢餓は避けられない。ロシアウクライナ小麦の主要産地なのだから。(コメント: 世界規模の飢餓が起きるという予測には同意しない。)

我が国指導者層に本作戦(ウクライナ侵攻)を決断させたのが何かは分からないが、彼等は揃って我々(FSB)の責任だとしている。我々の分析非難され、もっと沢山報告を出すよう、最近ますます圧力を掛けられている。

こういう政治コンサルタント政治家、権力者ども全員が混乱の元凶だ。何より重要なのは、誰もこんな戦争が起きるとは知らなかったということだ—開戦は誰に対しても秘匿されていた。

一例を挙げる— ロシアに対する隕石攻撃(コメント: 西側諸国による制裁を指すと思われる)[これは露→英訳時のミスと思われる。詳細はhttps://anond.hatelabo.jp/20220322231355を参照]があった場合の結果と影響の分析依頼があったとしよう—

そこで攻撃モード分析するが、一方これはあくまで仮説であって細部を強調するな、とのお達しがくる。なるほどこのレポートはどこぞの官僚チェックリストとして使うもので、分析結果はロシアにとってポジティブものでなくてはならない、

そうでなければ「仕事ができていない」と詰問されるんだな、と理解する。したがって、我々にはどんな攻撃にも対抗手段が揃っている、という結論を出さざるをえない。もう完全にやりすぎだ。

ところが、蓋を開けてみればこれが仮説ではなく現実に起こっており、こんな仮説に基づいた分析など全くのゴミ屑になってしまった。制裁に対抗できていないのはこのためだ。こんな戦争が起きることは誰も知らず、従って制裁への対抗策も準備していなかったのだから

これは秘密主義と裏表だ—誰もが知らされていないのなら、準備のしようがあるだろうか?

カディロフは激おこだ。ウクライナが「FSBからキーウのチェチェン部隊情報をもらった」と吹聴したことで、我々(FSB)と連中は一触即発になりかけた。

カディロフの部隊戦闘に入る機会すらなく壊滅し霧消した。FSBからウクライナへのリークがあったという情報を私は持っていないので、推測するにその可能性は1-2%だろう—とはいえ可能性を完全に排除できるものではない。

我々の電撃戦は完全に失敗した。そもそもが完遂できないタスクだ: ゼレンスキーと部下を開戦3日で確保し、主要な建物をすべて占拠し、城下の盟を誓わせたとしたら、

ウクライナ抵抗は最小限に抑えられただろう。理屈上は。だがそれがどうした? こんな「理想的な」展開であってさえ、解決不能問題が残っている: 我々は誰と交渉する気だ?

ゼレンスキー排除するとして、よろしい、では合意署名するのは誰だ? ゼレンスキー署名するなら、彼の排除後は合意は役立たずだ。ОПЗЖ(ウクライナの親露派野党)は協力を拒否している。

臆病者のメドヴェドシュク[実業家プーチンの友人]は逃亡。指導者は他にもいるが—ボイコ[野党党首]は拒否、彼の支持者も理解しないだろう。ツァリョーフ[DPR・LPR議会議長]を呼び戻そうにも、ロシア国内ですら不評。ヤヌコーヴィチ[前大統領]を戻す? どうやって?

占領不可能、ということになれば、我等の撤退後、[ウクライナ]新政府10ももたずに倒されるだろう。

占領するにしても、必要人員がどこにいるというのか? 司令部軍警察、防諜、諜報—ウクライナ人の抵抗を抑え込んだとしても、50万人は要る。これに更に補給兵站が加わる。

こんなのはまりきったことだ—質の悪いリーダーシップを量で補おうとするなら、何もかも分が悪くなる。繰り返すが、これは「理想的シナリオ」での話だ。現実はそうではない。

それでどうなっているのか? 総動員を掛けることはできない。理由は2つ:

1)総動員を掛けたらロシア国内問題で自壊する: 政治でも経済でも社会でも。

2)我々の兵站今日ですら伸びきっている。これだけ巨大な分遣隊をウクライナに送り込めたとして、何が得られる? ウクライナ—広大な国土を持ち、我々に向けられる敵意は半端ない国において。

我々の道路はこんな大部隊補給に耐えうるようできていないから、何もかもがストップするだろう。現在の混乱状況を鑑みれば、指導者層がどうにかできるものでもない。

この2つの理由が同時に存在している。どちらか一方でも、失敗には十分だというのに。

ロシア軍の損失について: 実数は分からない—誰にも。開戦から2日間は何がしか情報が入ってきたが、今となってはウクライナで何が起きているのか誰も把握していない。主要師団との連絡は途絶えている。(!!)

通信回復するかもしれないし、攻撃を受けて散開しているかもしれない。司令官ですら戦死者数・負傷者数・捕虜数を把握できていない。戦死者の合計数は千人単位だろう。1万人か、5千人か、2千人ですんでいるか

こんなことすら、司令部誰も知らない。もしかしたらロシア兵の戦死者は1万人近くかもしれない。しかもここにはDNRとLNRの戦死者は含んでいない。

ゼレンスキー殺害ないし捕縛したとしても、状況は変わらない。我々に向けられる敵意はチェチェンのそれ並だ。今となっては、ウクライナの親露派ですら公然と我々に反抗している。

それもこれも、(ロシアの)トップがすべて決めたから。こんなシナリオ(ウクライナ侵攻)など、先制攻撃を受けない限り起こらないと聞かされてきたから。

我々が脅威を高めていくのは、戦闘によらず交渉で結果を出すために必要と聞かされていたから。ウクライナ国内でのゼレンスキー批判の準備も、ウクライナ侵攻など考慮にも入れていなかったから。

今日ウクライナ市民の死者数は幾何的に増加しており、抵抗は強くなる一方である歩兵部隊都市侵入を試みているが—落下傘部隊20隊のうち、わずか1隊が「暫定的に」成功を納めたのみ。

モスル侵攻を思い出してほしい。まるで同じだ—どの国でも起こることで、何も新しいことなどない。ここ数十年のヨーロッパでは—セルビアが一番良い例だろう—都市を包囲しても数年は持ち堪えられる。ヨーロッパからウクライナへの人道的支援が始まるのも時間問題だ。

我々のひとまずの期限は6月だ。というのは、6月になったらロシアには経済というものが無くなるからだ—何にも残らない。

大局的には、来週には(ロシアで)(戦争賛成派対反対派の)両者の一方が崩れるだろう。こんな(ロシア国内の)緊張状態は長続きできない、というだけのことだ。

分析のしようもなく、混乱状態予測の立てようもなく、何が起きるか確度を持って言える人間など(ロシアには)誰もいない。

直感に従って、しかも強い感情に動かされて行動するなどというのは最早ポーカーではない。だが賭け金は釣り上がってしまい、どれかしらの手段はうまく行くだろうという望みに掛けるしかない。悲しいけれど、人間は往々にして計算違いを起こすし、そうなればすべてを失うことになる。

見渡してみれば、ロシアにはアウト[ポーカーにおいて「これを引けば勝てる」というカード。「勝ちの目」]が無い。勝ち筋などなく、どうやっても負けるしかない—ということだ。(ここで一旦中断。小休止後に再開する)

(ここから後半。こちらはもっと興味深く、ラストには喜ばしい方向で驚くべきことが記されている)

我々は前世紀の失敗を100%なぞっている。「弱っちい」日本を蹴散らして瞬く間に勝利するつもりが、実は我々の軍はずたぼろだった。[日露戦争]

その後、また勝ちを目指して戦争[第一次世界大戦]をおっ始め、軍隊教育のためにボリシェヴィキ徴兵を始めた。当時よく知られていなかったボリシェヴィキ戦争反対のスローガンを掲げ、ああいった行動に出た…

プラスの面も見よう: 懲罰部隊前線に送り込むなんてことは考えもしないよう、我々は手段を尽くした。政治犯や社会不適合者を徴兵したら、前線士気は下がるだけだ。

敵軍(ウクライナ)の戦意は高い。恐ろしく高まっている。戦い方をよく知っているし、有能な指揮官も多数居る。武器補給もある。世界的な人道破局舞台を整えているようなものだ。

我々が最も恐れていることは: 首脳が古くから問題を新しい問題で糊塗しようとしていることだ。ドンバス2014年に起きたことの大きな理由がこれだ—我々は西側諸国クリミアの「ロシアの春」から引き剥がす必要があった。それで、いわゆるドンバス危機演出し、西側の注意を逸らして

交渉材料にするしかなかった。だがそれで問題さらに大きくなった。そこでエルドアン圧力を掛けてサウス・ストリーム(ガスパイプライン)を4本引かせた上で、シリアに侵攻した。

レイマニ(イスラム革命防衛隊)が自分側の問題解決するために、わざと偽情報を我々に流したために起きたことだ。その結果、クリミア問題は片付けられず、ドンバス問題も無くなっていない。

サウス・ストリームは(ガスパイプライン)2本に減らされ、シリアは宙吊り状態だ—我々が撤退すればアサド政権は倒され我々は無能扱いされるが、我々が駐留し続けるのも困難だし意味もない。

こんな「ウクライナ電撃戦」を誰が思い付いたのかは知らない。もし仮に我々が正しいインプットを受け取っていれば、少なくとも初期の計画には疑問点があり、大部分を再評価するよう指摘できただろう。それはもう大量に。

それが今や、我々はクソみたいな(PG言葉遣い英訳者による)ハマリ状態で、どうしたら良いかも分からない。「非ナチ化」「非武装化」というのは分析カテゴリには無い。というのも、具体的に数値化されたパラメタが無く、目的達成を何をもって評価できるのか分からない。

今や我々は、頭のおかし参謀トップヨーロッパとの紛争決断させるのをただ待つだけだ。要求制裁の緩和だ—制裁を弱めるか、それとも戦争か。

西側が拒絶したら? その場合、本物の国際紛争に巻き込まれ可能性も否定しない。1939年ヒトラー同様に。我々の「Z」[紀章]は鉤十字同様に扱われるだろう。

(ウクライナでの)局地的な核攻撃はありうるか? イエス。但し軍事目的ではない。こんな兵器は防御を崩す役には立たない。使うなら目的は我々以外(西側諸国)の恫喝だ。

我々はウクライナに全責任をおっ被せるシナリオの土壌を作っている。ナルイシキン(ロシア対外情報庁官)と配下SVRは、ウクライナが密かに核兵器製造していた、という証明をせっせとこさえている。クソったれ。

連中は、我々がとっくに分析放棄した論を押し通そうとしている: [核兵器開発の]専門家ウランがあったことの証拠証明など、でっち上げることは不可能だ。ウクライナには劣化同位体238[ウラン238。劣化ウラン]が1トンある—だが問題にはならない。核燃料サイクル上、作り出すことを秘密にはできない。

「汚い爆弾」にしても秘密裏に製造することはできない。ウクライナの古い原発では、それに必要物質副産物として最小限産出されるのみだ。アメリカはMAGATE[IAEAロシア表記]と共にこういう施設監視しているから、こんな論など出したら馬鹿にされるだけだ。

1週間後には何が起きているだろうか? 2週間後でもよい。我々はドツボにハマり、古き良き、空腹の90年代を思い出すことになるだろう。

市場が閉じつつあるのに対抗して、ナビウリナ[ロシア連邦中央銀行総裁]は正しい措置を講じているようではあるが、所詮は船に空いた穴を指で塞ぐようなものだ。状況はどのみちどんどん悪化し続ける。3日とか5日とか7日、などのうちには最早解決しない。

カディロフが地団駄を踏んでいるのも故ないことではない。彼等には彼等の野心がある。彼は「無敵」として名をあげた—もし失敗したなら、自分の部下達に引き摺り下ろされることになる。

それからシリア。「諸君—耐えろ、ウクライナは片づける、そうしたら我らのシリアでの地位を強化する。」実際のところ、ロシアの分遣隊はい補給が切れるかも分からず、その後には熱波が待っている…

トルコ海峡を封鎖したし、シリア物資を空輸するのはかまどに金をくべるようなものだ。しかもだ—これはすべて並行して起こっている。ひとまとめにして分析する時間すら無い。

我々の現状は1943-1944年ドイツのようなものだ—だがこれはウクライナでの「初期状態」にすぎない。

過労でくらくらするし、これは夢で、実は以前と何も変わっていないのではないかと思うことすらある。

監獄について—今後も悪化するだろう。ナットは血が滲むまで締め付けられるだろう。どこでも。有り体に言って、純粋テクニカル観点では、現状をコントロールし続けるにはこの手しかない。

我々は既に総動員体制だ。だがこんな体制は長く続けられない。タイムテーブルがどうなっているのかは分からないが、状況は悪化の一途だ。国家統治というのものは、総動員を掛けたら狂い始めるものと決まっている。しかもだ: 100mを疾走できるとして—それをマラソンでやったらどうなるか。

で、ウクライナ問題について100m競走よろしく飛び出したものの、よく見たら参加登録したのはマラソンだった、ということだ。しかもこれは、現状のかなり簡潔な要約でしかない。

更に皮肉なことを言えば、私はプーチンが核の赤ボタンを押して世界を終わらせるとは信じていない。

まず、それを決められるのは1人ではない。誰かが反対するだろう。このプロセスには多数の人間が関与している。「赤」ボタンを1個押すだけ、というものではない。

2つ目、そもそも[核兵器が]正常動作するかも疑念がある。

経験的に知られているとおり、制御構造に透明性があるほど、問題点は見つけやすい。誰が何をどうコントロールしているか混沌としているにも関わらず、虚勢を張った報告ばかりが飛び交う状況にこそ、問題が潜んでいるのが常である

「赤ボタンシステムが言われているとおりに稼働するかは確信が持てない。それに、プルトニウム燃料は10年毎の交換が必要だ。

3つ目、これが最も唾棄すべきで悲しいことだが、私個人の信念として、側近や忠臣すら近づかせないようになったプーチンが、自分自身を犠牲にするなどとは思えない。

プーチンが恐れているのがCOVIDなのか暗殺なのかはどうでもいい。もしプーチンが、自分が最も信頼していた人々すら恐れているのだとしたら、自分自身と最愛の人々を破壊するなんてことができるものかね? (英訳終)

2021-08-12

[] そのにじゅうに

カテゴラァーイズ

 

先日、増田さんからのご指摘がありまして、いい加減カテゴリー化してくれ検索しづいから、とのことでした。

その際に増田さんにカテゴリー化のやり方を教えて頂いたんで、興味のある方は朝礼後に半角の角括弧をセットで持って担当の方に聞いてください。[]の奴です。

あと、カテゴリー名前にしたいものを考えておいてください。

あとカテゴリー化の際に少しだけタイトル改装した部分もありますので頭上には注意して作業してください。

 

では、今日は頭上注意よいかで行きたいと思います

頭上注意よいか!頭上注意ヨシ!

 

それでは今日も一日、ご安全に!

2020-09-30

anond:20200930135440

重版された参考文献を参照する場合は、角括弧に元の出版年を記述する。例: (Marx [1867] 1967, p. 90)。

2020-01-10

Google音声入力クソすぎるやろ

正規表現入力しようとしたけど、キャレットとか角括弧とかバックスラッシュとか出てこねえじゃん

2016-09-15

角括弧、全角英数字半角カナ文書使用する人は

死んでほしいのは私だけ?

気持ち悪いんだよ、ほんと。

2015-06-23

http://anond.hatelabo.jp/20150623182343

隅付き括弧【】ではなく角括弧[]を使うと良い

カテゴリー[今日知った言葉]に統一するとなお良い

2015-02-23

http://anond.hatelabo.jp/20150223173456

日本などの一部の国では、数式における括弧の入れ子は [{()}] の順で用いられてきた。しかし、世界的には {[()]} の順で用いられる方式多数派である

JIS Z 8201-1981 においても「小括弧」・「中括弧」・「大括弧」という名称は廃止され、現在は「丸括弧」・「角括弧」・「波括弧」と表記されている。

2013-04-19

はてな記法の使い方

見出し記法

頭にアスタリスクを付けます

例) *見出し記法

[カテゴリ]見出し

頭にアスタリスク角括弧カテゴリ付をしま

例) *[カテゴリ]見出し

小見出し記法

頭にアスタリスクを2つつけま

例) **小見出し記法

頭にハイフンを1つつけると大リスト

ハイフンを1つずつ増やしていくと階層を作れます

例)

-リスト記法

--中リスト

--中リスト

---小リスト

-大リスト

a
定義リスト記法
b
あわわ
c
ひゃひゃひゃ

コロン定義文字をはさみます

例):a:定義リスト記法


名称見え方いわゆる
表組み記法こんなんテーブル

縦棒でリストっぽくします。アスタリスクをつけるとタイトルカラムになります

例)|*名称|*見え方|*いわゆる|

|表組み記法|こんなん|テーブル|




引用記法

>> だけの行と << だけの行ではさみます

>>

引用記法

<<



pre記法

>|だけの行と |< だけの行ではさみます

例は省略



記法

空白だけの行を2行連続で書き込みます

2011-01-28

http://anond.hatelabo.jp/20110127235920

><div>

ああああああああ<br

ああああああああ<br

ああああああああ<br> </div><

あああああ
あああああ
あああああ

おー、すげー最初最後の半角括弧重要なんだなあ

どうもどうも

2008-09-23

正規表現の機能の覚書き

はじめに

「はじめての正規表現」ホッテントリ入りしていますが、

導入としては、何に使うのかがわかりやすくて良いのではないかと思います。

あれを見て、基本機能をまとめてみたくなったので、正規表現の基本的な機能について書いてみます。

正規表現が初めてという人は「はじめての正規表現」を先に見たほうがいいと思います。)

例では「検索」か「置換」をするものとして話を進めていきます。

「はじめての正規表現」が実例を中心にしたのに対して、こちらは機能を中心に書きます)

正規表現は、プログラミング言語やその他のツールなど、それぞれで微妙な違い(方言)があるので、その点には注意が必要です。

(表記法が違ったり、ここに紹介する機能がサポートされていなかったり、逆に紹介していない機能をサポートしていたりする場合があります)

メタ文字とリテラル文字

正規表現には、メタ文字とリテラル文字というものがあります。

メタ文字とは機能を持つ文字で、『.』『*』『*?』といったものが当てはまります。

リテラル文字は「文字それ自体」と解釈される文字で、『 』『a』『<』といったものです。

アルファベットや数字はリテラル文字なので、

「検索する文字列:『egg』 置換する文字列:『chicken』」

などとすれば、正規表現を使わない置換と同じ効果になります。

なお、検索して検索文字列が当てはまることを「マッチする」と言います。

メタ文字に使われている文字を検索したい場合は、直前に『\』を置きます。(これを「エスケープ」と呼びます。)

.*?^$()[]{}』などがメタ文字です。

$100』を検索したければ、『\$100』とすればいいということになります。

(『\』は環境によって、半角の『¥』『\』のどちらかになります。)

言語、ツール、モードなどによっては『@/#』もエスケープが必要です。

また、『\』自体は常にエスケープが必要です。

繰り返しについて

メタ文字意味
?直前の文字を0回または1回繰り返す
*直前の文字を0回以上繰り返す
+直前の文字を1回以上繰り返す
{n}直前の文字をn回繰り返す
{n,}直前の文字をn回以上繰り返す
{n,m}直前の文字をn〜m回繰り返す

これらのメタ文字は「量指定子」といって、直前の文字の繰り返しを意味します。

*』は「任意の文字を0回以上繰り返す」とありますが、

「0回以上繰り返す」とは、「全く何もなくてもいいし、いくらあってもいい」という意味です。

よって、『?』は「あってもなくてもいい」、『+』は「1つ以上あればいい」と解釈できます。

colou?r』は『u』があってもなくてもいいので「colorかcolour」ということになります。

{n}』は、たとえば『-{15}』なら、「ハイフン(-)が15個続くもの」となります。

-{10,}』なら「ハイフン(-)が少なくともは10個続くもの(多いのはいくらでも)」、

-{10,15}』なら「ハイフン(-)が10〜15個続くもの」となります。

また、複数の文字を繰り返したい場合は括弧で囲みます。

(Gang){2}Dance』は『GangGangDance』と同じ意味になります。

欲張りと非欲張り

メタ文字意味
?直前の文字を0回または1回繰り返す(欲張り)
*直前の文字を0回以上繰り返す(欲張り)
+直前の文字を1回以上繰り返す(欲張り)
??直前の文字を0回または1回繰り返す(非欲張り)
*?直前の文字を0回以上繰り返す(非欲張り)
+?直前の文字を1回以上繰り返す(非欲張り)

「欲張り」とは、「なるべく多くの文字に適用しようとする」、

「非欲張り」とは、「なるべく少ない文字に適用しようとする」という意味です。

対象文字列が『aaa bbb ccc』だとします。

すると、検索する文字列が『a+』なら『aaa bbb ccc』、

検索する文字列が『a+?』なら『aaa bbb ccc』が置換対象となります。

(「すべてを検索/置換」する場合は当てはまりません)

「『a』を1回以上繰り返す」ということは、『a』でも『aa』でも『aaa』でもマッチすることになりますが、

「欲張り」かそうでないかで実際のマッチは変わってくるわけです。

文字クラス

文字クラス意味
[abc]a、b、cのいずれか
[a-z]a〜zのいずれか
[^a]a以外の文字(改行文字を含めaを除いた全て)
[^a-z]a〜z以外の文字(改行文字を含めa〜zを除いた全て)

文字クラスは『a』や『<』などの代わりに文字の種類を指定するものです。

a〜eのどれかの1文字という指定をしたい場合に『[abcde]』や『[a-e]』といった指定ができます。

また、文字クラス内の最初に『^』をつけて『[^abc]』などとすれば、

「a、b、c以外の何の文字でもいい」とすることができます。

間違いやすいのが「そこにaもbもcも存在しなければいい」という意味ではないということです。

文字クラスは「なんらかの1文字の身代わり」なので、それは何か1文字を表しています。

-』は範囲を表すのに使用します。そのため、『[;-%]』で「; - %のどれか」を表現することはできません。

-』を含める場合は必ず最初に持ってきます。すると『[-;%]』という風になります。

「; - %以外の文字」としたいならば『[^-;%]』とします。

[』や『]』、『\』を文字クラスに含めたい場合は直前に『\』を置いてエスケープします。

「『[』または『]』」であれば『[\[\]]』となります。

^』やその他の記号は先頭に置かなければいいので、エスケープの必要はありません。

.』は「改行以外のすべての文字」を表しています。

改行は『\n』で表されるため、『.』は『[^\n]』と等価です。

(ただし、正規表現モードによっては「改行も含めすべての文字」を表す場合もあります)

文字クラスにはいくつかの略記法があります。

文字クラス意味同等の表記
\w記号や空白ではない文字すべて[a-zA-Z0-9_]
\W記号や空白ではない文字以外[^a-zA-Z0-9_]
\d数字[0-9]
\D数字以外[^0-9]
\sタブや改行など、空白類とされる文字[ \t\n\r\f\v]
\Sタブや改行など、空白類とされる文字以外[^ \t\n\r\f\v]

(*間違って『\s』の同等の表記にも『^』がついていたのを修正しました)

(『\t』はタブ、『\v』は垂直タブ、『\r』はキャリッジリターン(CR、改行の一種)、『\f』は改ページ)

これらは『[a-fA-F\d]』のようにすることで、文字クラスブラケット角括弧)内に含めることができます。

「同等の表記」と書きましたが、文字をユニコードして扱うツールの場合は、上記が同等の表記にはならず、

たとえば『\d』であれば漢数字が含まれてしまったりするので注意が必要です。

選択

(A|B)』は「AまたはB」という意味です。(これを「選択」と呼びます)

(A|B|C)』なら「A、B、Cのどれか」という意味になります。

(gray|grey)』は『gr[ae]y』とほぼ等価となります。

[ae]』は「1文字のaまたはb」という意味になるので結果的に、ほぼ同じ効果が得られるわけです。

(ただし、これはgrayとgreyの違いが1文字だけだったためで、そうでない場合はこうはなりません)

気をつけなければならないのは、その順番です。

(Java|JavaScript)』で検索すると、対象文字列内に存在する『Java』と『JavaScript』すべてマッチするように思えますが、

JavaScript』は選択肢の前(左)のほうにある『Java』が当てはまってしまうため、

Script』部分にはマッチせず、『JavaScript』というマッチになってしまいます。

選択では左側が優先されるので、『(JavaScript|Java)』とすることでこの問題は防げます。

言語、ツールによっては、この問題が起こらない=順番関係なく長いほうを適用しようとするものもあります)

アンカー

メタ文字意味
^行頭
$行末
\b単語境界
\B単語境界以外

リテラル文字や文字クラスが「文字自体」にマッチするのと違い、アンカーは「位置」にマッチします。

検索する文字列が『^』、置換する文字列が『>』なら、「行頭に『>』を挿入する」という意味になります。

単語境界とは、「単語を構成する文字=『\w』に相当する文字」と「単語を構成しない文字=『\W』に相当する文字」の間の位置のことです。

regular expression.』なら『^regular^ ^expression^.』の4ヶ所に当てはまります。

\b.*?\b』とすれば単語すべてにマッチさせることができます。

しかし、「単語構成文字」が基準なので、『JavaScript』は1単語でも、『L?K?O』は1単語とは見なされません。

アンカーは位置にマッチするので、文字クラス内に含めることはできません。

^』や『$』を文字クラスに含めても、その文字自体という意味になります。

つまり、『[^$]』なら「行頭または行末」ではなくて、「『$』文字以外」ということになります。

また、『\b』は文字クラス内のみ、バックスペース文字を表す場合が多いようです。

大文字と小文字

正規表現には、大抵「大文字と小文字を無視する」というオプションがあります。

これが入っていないと「『to:』で検索しても『To:』にマッチしない」といったことが起こります。

言語、ツールによっては、正規表現の一部にのみ大文字と小文字を無視する機能があるものもあります。

例えばRubyでは『(?i:foo)』という形式を使用できます。

(?i:Ruby) Python』という表現なら、『ruby Python』や『RuBy Python』にはマッチしますが、

RUBY PYTHON』にはマッチしない、ということになります。


キャプチャと後方参照

括弧内に入れた文字列は、ある場所に記憶されます。(「キャプチャ」と呼びます)

これは『\n』という表記を使って呼び出すことができます。(nは数字)

同じ単語が2連続で出てくるもの(『merry merry』みたいなもの)を探すという場合、

\b(\w+)\b \1』とすることができます。(ここで使った『\1』を「後方参照」と呼びます)

こうすると、『\1』の部分は、『(\w+)』を使ってマッチしたものと同じものがあるものとして解釈されることになります。

括弧を何個も使う場合は、左の括弧から順に『\1』、『\2』、『\3』となります。

また、後方参照は置換文字列にも使うことができます。

つまり置換文字列内に『\1』と書けば1番目の括弧、

\2』と書けば2番目の括弧でキャプチャされたものがそこに入ることになります。

この場合、言語、ツールによっては『\n』ではなく『$n』を使う場合もあるようです。

括弧は『(foo|bar)』という選択や、『(humbert){2}』というグループ化など、キャプチャ以外にも使われます。

そのため、キャプチャに使われた数字をわかりやすくするために、キャプチャしない括弧もあります。

それには『(?:foo)』という表記を使います。

前の例であれば『(?:foo|bar)』と『(?:humbert){2}』になります。

先読みと否定先読み

「その位置の続くものを確認する」というのが「先読み」です。

対象文字列を『JavaScript Java Applet』として考えてみましょう。

Java(?=Script)』は「『Script』が後に続く『Java』」にマッチします。

(?=Script)』の部分が、「『Script』が後に続くかどうか」をチェックしているので、

後ろに『Script』が続かない単なる『Java』にはマッチしません。

(?=Script)』の部分は「後に『Script』が続く位置」にマッチしていることになります。

この例のマッチは『JavaScript Java Applet』となります。

逆に、『Java(?!Script)』とすれば、「『Script』が後に続かないかどうか」をチェックするので、

後ろに『Script』が続かない単なる『Java』にマッチさせることができます。

こちらは「否定先読み」と呼びます。

この例のマッチは『JavaScript Java Applet』となります。

言語、ツールによっては、「その位置の前にあるものを確認する」という「戻り読み」「否定戻り読み」がサポートされているものもあります。

(これは『(?<=foo)』『(?<!=bar)』という形で使います)

先読みや否定先読み、戻り読みなどをまとめて「前後読み」と呼びますが、

前後読みは位置にマッチするため、戻り読みは先読みとは通常書くべき位置が逆になります。

(?<Mozilla )Firefox』とすれば、『Mozilla 』に続く『Firefox』のみにマッチします。

強欲な量指定子とアトミックなグループ

メタ文字意味
?+直前の文字を0回または1回繰り返す(強欲)
*+直前の文字を0回以上繰り返す(強欲)
++直前の文字を1回以上繰り返す(強欲)

上のほうで?、*、+は「欲張り」だと書きましたが、「欲張り」な量指定子も“ゆずる”ことがあります。

対象文字列が『"something"』だとして、検索文字列".*"』はこれにマッチします。

しかし、強欲な量指定子*+』に置き換えて『".*+"』とするとマッチしません。

これはなぜかというと、「欲張り」な量指定子を使った『.*』の部分は、

最後の『"がなければ『something"』にマッチすることになりますが、

正規表現の最後に『"』があるために、対象文字列の最後の『"』をゆずっているのです。

しかし、強欲な量指定子*+』はゆずることがないため、

.*+』の部分が『something"』にマッチしてしまい、

正規表現の最後の『"』にはマッチできなくなるのです。

強欲な量指定子サポートしていない言語、ツールでも、「アトミックなグループ」というものが使える場合があります。

アトミックなグループでは『(?>foo)』という表記を使います。

\w?+』なら『(?>w+)』、『\w*+』なら『(?>w*)』、『\w++』なら『(?>w+)』で代替できます。

意図しないマッチに気をつける

*』の「直前の文字の0回以上の繰り返し」はよく気をつけないと、間違ったものにまでマッチしてしまいます。

リテラル文字と文字クラスは「文字自体」にマッチすると書きましたが、

-*』というような表現は、『-』や『--------』だけでなく、

『』つまり、空文字列にもマッチしてしまうのです。

なぜそうなるかというと、「0回以上」ということは「なくてもいい」ということだからです。

文字列へのマッチは、実質上「位置」へのマッチと似たようなものになります。

検索文字列を『-*』として一括置換すると、

-』や『--------』が置換されるだけでなく、

-』が存在しないすべての場所に置換文字列が挿入されてしまうことになります。

正しい正規表現を書くためには、「どう書けばマッチするか」だけでなく、

「どういう場合にマッチしなければいいか」についても考えてみる必要があります。

ワイルドカードの『*』≒正規表現の『.*

「はじめての正規表現」で、

ワイルドカードの『*』=正規表現の『.*

とありますが、これは厳密には微妙に違います。

ファイルグロブでは《*》は「任意の文字を1回以上繰り返す」

つまり、1文字以上あればなんでもいいということになります。

この意味だと、《*.*》は "foo." や ".bar" は当てはまりません。

しかし、「0回以上」であればマッチすることになります。

正規表現では「1回以上繰り返す」は、《+》なので、

「任意の文字を1回以上繰り返す」は『.+』となります。

よって、《*.*》とほぼ等価な表現は『.+\..+』となります。

これは私の勘違いでした。miauさんご指摘ありがとうございます。

「*.*」は foo. にマッチするはずだし、.barマッチしないのは、「*」がドットファイルマッチしないっていう特殊ルールがあるから・・・ですよね?

ワイルドカード(ファイルグロブ)の「*」って - miau's blog


ファイルグロブの《*》は、「0回以上繰り返す(ただし例外として、一番最初のドットは表せない)」ということのようです。

*.*》とほぼ等価な表現は、正しくは『(?!\.).*\..*』となります。


最後に

正規表現を使うにあたっては、検索対象がどのようなものか知っておくことが重要です。

\d{4}[-/]\d{1,2}[-/]\d{1,2}』で日付と思われる文字列を検索することができますが、

これは『00-0000-00-00』というものにもマッチしてしまいます。(『00-0000-00-00』)

かしこれを厳密にしようと思えばかなり複雑な正規表現になってしまうので、

どの程度の厳密さが必要かを把握しておくことが肝要と言えるでしょう。

冒頭にも書きましたが、正規表現は、言語やツールによって微妙な違いがあるので、

その辺りについては各言語、ツールの説明を参照してください。

本格的に学びたい場合はオライリー「詳説 正規表現」おすすめです。

(ただ、この本はプログラミングのことを多少は知らないと難しいかもしれません)

また、PHP正規表現チェッカーですぐに試せるようです。

関連リンク



反応への応答

b:id:K-Onoさんの

なぜ増田? これでidデビューしてもいいんじゃないのか?

について。

実ははてなダイアリーもある(d:id:sleepwlk)んですが、長いこと書いてなかったので、

匿名ダイアリーのほうが多くの人に見てもらえるのではないかと思ってこちらに書いてみました。

*2008-09-23 誤記の修正と、一部加筆しました。

*2008-09-24 ワイルドカード記述を修正しました。

*2008-09-24 文字クラス記述の間違いを修正しました。b:id:FunnyBunnyDizzyさんご指摘ありがとうございます。

*2008-09-24 「意図しないマッチに気をつける」を追加しました。

2007-03-20

タグられたブクマを見つけよう

http://anond.hatelabo.jp/20070320012838

del.icio.usLivedoorクリップを少しだけ触って気づいたのだけど

はてブタギングするときに半角括弧([])でくくるルールって、結構特殊なんだね。

全角混じりの日本語で全角⇔半角を切り替えるのは、タグの補完機能が実装されていても実は結構ストレスになる。

はてブタギングを続けるならば、それなりに自分の決めたポリシーがないとだめ。

見方を変えれば、タギングをしっかりしている人のブックマークは掘り起こしていろいろな角度から眺める価値がある=第三者であっても使える資料になるとは考えられないかな。(タギングしないユーザブクマに価値がないと言っているわけではありません。念のため。)

そういうユーザみんなで発掘して注目していけば、まだまだはてブだって衆愚じゃないし、使い手はもっとあるはずだと思うよ。

1月にid:zoniaさんが仕掛けた「BMKSBM」って、まだ続いているみたいだし。

http://b.hatena.ne.jp/t/BMKSBM?sort=eid

もう少し、はてブ集合知がどこまで行き着くかを眺めていきたいな。

【追記】

id:REVさんのブクマ※で面白いまとめ記事を紹介してもらいました。

http://grev.g.hatena.ne.jp/keyword/bookmark_Links

日々のブックマークが変わり映えしないな、とか思い始めたときなんかは、こういう記事に目を通してお気に入りを入れ替えてみるのもいいかもしれませんね。

 
ログイン ユーザー登録
ようこそ ゲスト さん