「漢数字」を含む日記 RSS

はてなキーワード: 漢数字とは

2008-11-03

日本は侵略国家であったのか」を読む 補足

http://anond.hatelabo.jp/20081101232814

 こんにちは元増田です。

 どれだけ厳しい批判が寄せられているだろうかと恐る恐るみてみたら、好意的な反響が多く、胸をなでおろしています。

 増田に書く理由としては、ひとつめ、専門外のことに長く関わるつもりがないこと、ふたつめ、連休の出先で手元に一冊の参考書籍もなく、HDDネット上のソースだけを参考に書いたエントリなど、歴史を専攻したものとして、しかも専門外のものとして、とても胸を張って提示できるものではないこと、みっつめ、それゆえ、ホームに書いたら全て書き換えるほどの修正をせずにはいられないだろうが、その気力も時間もないこと、よっつめ、しかし、あれを「論文」とすることには憤りを覚えたので、せめて学問を知る人にはトンデモトンデモであると伝えてみたかったこと、いつつめ、増田であれば上記の点をそれほど気にやまずに済むこと、このくらいでしょうか。したがって、私のエントリはいわゆる「ちらしのうら」です(文献表記がみにくいのもわざとです。すみません)。私はさくっと書き逃げする卑怯者です。内容がいかがわしいのも推敲が甘いのも全て私の責任です。でも、もろもろの言い訳によって逃げられるものではないですよね。ああ。

 さて、前回のエントリでは、後半にさしかかったときにから睡魔に襲われ、最後は「藁人形叩き」ばかりになってしまいました。ようやく投稿できたと思ったら、字数超過で記事を分割せねばならず、つづきでは田母神氏の論文タイトルを間違えてしまいました。謹んで失礼をお詫びします。いろいろとミスがあろうと手をいれるつもりはなかったのですが、批判する論文タイトルの間違いはいくらなんでもひどいので、訂正します(ついでに「シンガポール華僑粛清事件裁判記録」後編のミスも直します)。これも後出しですが、原文が縦書きの漢数字は、横書きなので適宜英数字にしています。

 では、気をとりなおして「藁人形叩き」ばかりをしていたところに補足してみたいと思います。最後に与太話の蛇足ですが雑感を述べてしめます。

 しかし人類歴史の中で支配、被支配の関係戦争によってのみ解決されてきた。強者が自ら譲歩することなどあり得ない。戦わない者は支配されることに甘んじなければならない。

(前回と同じく、はてな記法による引用の出所は、田母神俊雄日本は侵略国家であったのか」2008年http://www.apa.co.jp/book_report/images/2008jyusyou_saiyuusyu.pdf

 第2次世界大戦開戦の時点であっても、カナダオーストラリア南アフリカなどが自治領化・独立した例がありますね。フィリピンでも独立を前提とした自治領政府が成立していましたね。

 また、どちらかといえば植民地統治体制の比較の話ですが、自治・独立とまではいかないまでも、現地の住民を支配機構採用していく次のような例もありました。

1920年代より英国ビルマに赴任するICS〔引用者注インド高等文官の略称〕に英国人のみならずビルマ人も採用すべく方針を変え、その結果1939年末の段階で、ビルマにおける全高等文官のうちビルマ人は32.8%を占めるに至った」(根本敬「英領期のビルマ人高等文官(ICS/BSC)とタキン党」『東南アジア学会会報』63、1995年、17ページ。http://ci.nii.ac.jp/cinii/servlet/CiNiiLog_Navi?name=nels&type=pdf&lang=jp&id=ART0004924657

それは日露戦争、そして大東亜戦争を戦った日本の力によるものである。もし日本があの時大東亜戦争を戦わなければ、現在のような人種平等の世界が来るのがあと百年、2百年遅れていたかもしれない。

 1940年代において、宗主国が疲弊し、植民地独立運動が高揚したのは確かなことでしょう。ただし、歴史学の領分は、「もしも」を考えるというより、その過程をつまびらかにして、それぞれの要因や重要性を検討することにあります。

 まず、開戦の詔書には「東亜ノ安定」「世界平和」「万邦共栄」「東亜安定」「東亜永遠平和確立」という表現はありますが、肝心の戦争目的を述べている部分は、あくまで「今ヤ自存自衛ノ為蹶然起ツテ一切の障礙ヲ砕碎スルノ外ナキナリ」(「御署名原本・昭和十六年・詔書一二月八日・米国英国ニ対スル宣戦ノ件」1941年12月8日アジア歴史資料センターレファレンスコードA03022539800。引用部分の漢字は適宜新字体を用いました。センターホームページの検索バーに左記のレファレンスコードを打ち込めば該当資料のページへ飛べますhttp://www.jacar.go.jp/)ということであり、「アジア民族解放」、「植民地解放」、や「独立」といった文言は一切ないことを指摘しておきます。文面上はまさに自存自衛の戦いをうたっており、解放約束は明文上ではなされていません(ちなみに、みればわかりますが「八紘一宇」もないです)。では、実際、アジア諸国にどう接し、現地住民はどう対応したのか、前回は文献名をあげただけのものから少し引用しておきます。

ビルマ1943年8月1日主権を有する独立国家となったが,真の独立を求めるビルマ人にとってそれは,’’偽の独立’’,’’メッキの独立’’にすぎなかった。ビルマ人は,独立が’’空虚’’であることを知っていた。この当時の日本人に対するビルマ人の態度は,「愛していなくても我慢して接吻する」ようなものであった」(大野徹「ビルマ国軍史(その2)」『東南アジア研究』8(3)、1970、360ページ。http://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/55632/1/KJ00000134014.pdf原文の注の番号は引用者が削除しました。以下の引用文でも同じ)。

日本の『朝日新聞』は、この作戦について、「皇軍航空部隊の空襲は一見、印度民衆の苦難を一層増大せしめるかに見えるが、爆弾の雨の中に、皇軍印度独立運動に対する無限の慈愛と支援が含蓄されている」と書いていた。まことに「含蓄」の深い論評だったと言うべきであろう」(中里成章「日本軍の南方作戦とインド」『東洋文化研究所紀要東京大学)』151、2007年、190ページ。http://repository.dl.itc.u-tokyo.ac.jp/dspace/bitstream/2261/5716/1/ioc151004.pdf)。

「本稿では不十分ながら、日本大東亜共栄圏アジア主義プロパガンダが、そして、その大枠の中で動いたチャンドラ・ボース等の活動が、インド社会との接点を持てずに、空回りしていたことを明らかにしえたのではないかと思う」(前掲中里論文、195ページ。ボースたちについては、197ページの注6、200ページの注22、202ページの注26、208ページの注80も参照)。

 インドネシアフィリピンベトナム抗日闘争について、詳しくは論文本文を読んでいただきたいのですが、結論としては、

「要するに、東南アジア諸国の反植民地民族独立運動は、太平洋戦争日本の侵略によって生じた情勢やその他条件を、主体的、積極的に活用して日本に対応し、戦前に比して飛躍的な成長を遂げた。そして、このことは、戦後における東南アジア諸国の民族独立運動の高揚や民族独立の達成の決定的要因となった。この意味において、太平洋戦争日本の侵略は、東南アジア諸国の民族独立運動史における一大転換点であったということができよう」(谷川榮彦「太平洋戦争東南アジア民族独立運動」『法政研究九州大学)』53(3)、1987年、395ページ。http://ci.nii.ac.jp/cinii/servlet/CiNiiLog_Navi?name=nels&type=pdf&lang=jp&id=ART0008279870原文にあった傍点は除いた)。

 以上でつっこみの補足は終わりです。現下の情勢については特に言及しません。

 さて、今回のエントリ執筆目的としては、可能な限り速やかに「論文」が論文になっていないことを示すことでした。大事なのは「内容」とおっしゃるのは結構ですが、学問的に批判可能な形式(もちろん既存の研究にとらわれない革新的な独自形式でも、読者に史料を提示できればかまいません)をとらないものは、「無敵な人」の独自な「歴史観」の告白にすぎないでしょう。それに価値を認めるのは個人の自由ですが、学問教育の場に持ちこむのはお門違いです。そのような姿勢では、いつまでたっても歴史学における扱いはトンデモのままですよ。もちろん、大学研究所にいる専門家でなければ歴史の話をしてはいけないということではないです。「昭和史論争」を引き起こしたのは歴史研究者ではありませんでした。しかし、自己見解教科書にのるような通説となさりたいのであれば、専門家と同じ舞台に立ち、その批判に応答しなければならないでしょう。「つくる会」はその舞台に立つ気はないと宣言した結果どうなっているでしょうか。今なら学術雑誌に投稿しなくても、インターネット上でいくらでも長文の論文発表できますよね。

 一般に、歴史研究者は、四年生大学で専門的なトレーニングを受け、さらに修士課程二年間、博士課程三年間以上を費やして史料を読み込み論文を紡ぎだしています。それでも、個々の論文の結論で言えることはささやかなことです。また、研究会学会書評などの形でお互いに切磋琢磨しています。それぞれが広範な史料に目を通しているからこそ、個々の研究がその時代の歴史像のどこに位置づけられ、どの部分がその時代の特徴をよくとらえられているかを議論できるのです。自分の個別研究歴史研究の大きな流れのどこに位置づけられるのかをとらえるため、歴史を学ぶ標準的な手順としては、まずは先達がエッセンスを詰め込んだ教科書、概説書を読み、そこから主要な研究文献やレビュー論文目録等を漁って研究史をたどり、そこで用いられている史料を読み、先人の研究の妥当性を検討したり自己の問題関心を追求していくのです。木簡のように新しい史料が見つかったり、機密文書が公開されたりして史料が増えれば、それがどのように従来の見解に修正を迫り、新たな知見を付け加えるのか議論します。そのような積み重ねのなか、通史は更新され、教科書記述も変わっていきますが、このことをもって歴史は定まりないものだから最新の研究成果も独自研究も変わりないということは的外れでしょう。それはかえって科学としての歴史学が機能している証拠にほかなりません。

 さて、歴史学者全体がイデオロギー的に偏向している、現行の教科書自虐史観マルクス主義史観に基づいているという「つくる会」の主張もありますね(それでいて『国民歴史』のように、専門家研究から剽窃したりするの会員もいるのは厚顔無恥ですね。参照、尾藤正英『日本文化歴史岩波新書2000年あとがき)しかし、戦後長く標準的な高校教科書として採用されてきた山川出版社の『詳説世界史』の執筆者には林健太郎(故人への敬称は略します)が含まれていました。日本史にしても伊藤隆氏が編者であった『近代II』を含む、『日本歴史大系』山川出版社、1984-90年、が、受験前に初めて読む通史だった私などには、学会の主流がマルクス主義史観など妄言にしか聞こえません。岩波だから駄目などという意見も見ることがありますが、最新の『岩波講座世界歴史岩波書店、1997-2000年、では、古代中世近世近代という時代区分はもはや採用されていません。そもそも研究の場では、評価は自分の目で確かめてから下すもので、事前に確定できるものではないのです。

 私が前回あげた書評にこういう記述があります。

「いずれも〔引用者注:本文でふれられている臼井勝美氏、酒井哲哉氏の研究のこと〕,侵略の時間連続性〔引用者注満洲事変から日中戦争へ〕を,陸軍の遠心性,すなわち現地機関の好戦性や暴走に帰さない画期的研究であった」(加藤陽子書評 安井三吉著『柳条湖事件から盧溝橋事件へ―1930年華北をめぐる日中の対抗―』」『アジア経済』45(9)、2004年、67ページ。http://repository.dl.itc.u-tokyo.ac.jp/dspace/bitstream/2261/7473/1/kato45_09.pdf)。

日本の軍は強くなると必ず暴走し他国を侵略する」なんて本質論は、学界ではなされていませんよ。人事面でも、システム設計運用面でも、上部の問題は大きかったですよね。私みたいなものにも自衛隊に信頼できる友人はいますので、余計に上が軍の失敗を反省するそぶりもみせないのは問題と感じるわけです。

 最後に、余計なお節介でしょうが、歴史学入門、史学史についていくつか参考文献をあげておきます。ご興味のある向きは手にとられてみてはいかがでしょうか。

小田中直樹歴史学ってなんだ?』PHP新書2004年。(CiNiiの定額許諾を契約している大学関係者は、下敷きとなった論文DLできるかもしれません。私は今DLできる状況にないので保障はしません)

小田中直樹言語論的転回歴史学」『史学雑誌109(9)、2000年

http://ci.nii.ac.jp/cinii/servlet/CiNiiLog_Navi?name=nels&type=pdf&lang=jp&id=ART0002622266

歴史科学協議会編『卒業論文を書く―テーマ設定と史料の扱い方』山川出版社1997年

永原慶二『20世紀日本の歴史学』吉川弘文館2003年

 今まで述べてきたような研究の積み重ねに対し、自説の根拠もまともに示さずに自分の意見を広めたいと主張する行為がどういうものか、一度お考えになっていただけたら幸いです。

 また見苦しい長文になってしまいました。最後まで読んでくださった方に感謝します。

(追記)さすがに人名の誤記は看過できないのでミスを修正しました。

(再追記)引用文の出典が抜けていたのも直しました。すみません。

(再々追記)直ちに答えられるトラバをいただいたので応答します。ホロコースト研究の進展について次の文献を参照してください。

健介ホロコーストニュルンベルク裁判」『史論(東京女子大学)』55、2002年http://ci.nii.ac.jp/cinii/servlet/CiNiiLog_Navi?name=nels&type=pdf&lang=jp&id=ART0008575897

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 「意図しないマッチに気をつける」を追加しました。

2008-07-26

なんか踏んじゃったのかな。。。

スキャンウイルスしてもひっかからんが、なんもしてないのにウイルスバスターががんがん警告を発する。

どうもなんかに侵入を許したみたいだ。。。

クリーンインストールするしかないかな・・・

"URLフィルタログ","2008/07/26"

"時刻","フィルタ基準","URLアドレス","説明"

"00:06","禁止されたWebサイト以外は、アクセスをすべて許可する","http://六2.4.83.203/antispy/kb671231.dll?setid=(以下略)","スパイウェア"

"00:09","禁止されたWebサイト以外は、アクセスをすべて許可する","http://八9.188.16.29/database/kb456456.dll?setid=(以下略)","スパイウェア"

一応踏まないように数字を漢数字にかえておく。

なんなのかもわからんが、たまにピカピカでてるウイルスなんちゃらのバナーを踏んだ臭い。。。

どしたもんかな。。

2008-06-20

みーんな疎外中。

 長いので、興味ない人は1行くらいでスルーしてください。

疎外論」批判というのが一部でちょっと盛り上がっていたみたいですが。

 なぜ「疎外論」という発想が生まれたのかと言えば、それはたぶん、他人を説得する時にそういう方法しか思いつかなかったからじゃないかと思います。「本来の人間の姿」と「本来的じゃない現在人間の姿」とを対比させて、その差異を見せ付けることで「ほら、現在はこのような問題があるんだから」と問題のありかを指し示すというのは、他人に自分の意見を示す上でも非常にわかりやすくなりますし。

 じゃあ逆に、疎外論抜きで「私は社会に対してこのような問題意識を持っている」ことを指し示すとしたら、どうなるでしょうか。

「見ろ、このような社会のあり方は問題だ」

「なんで? 人間の生活はあるようにある、ただそれだけじゃん」

「なんでだよ、こんな社会のあり方は人間にとって生き難いだろうに」

「生き難いって、何と比べて言ってるのよ」

「そりゃあもちろん……いけね、“あるべき仮想的な理念像”はここでは使えないんだっけ。えーっと、それじゃあ社会の上層のあの人や中層のあの人と比べてだね」

「おいおい、そうやって万人を万人といちいち一対一マッチングさせる気か。地球シミュレータをフル回転させても無理だと思うぞ」

「いやだから、技術的な問題じゃなくて社会構築の原理的な問題をだね」

「そうやってすぐ空想的な原理原則を持ち出す、君は本当にどうしようもないほど形而上的だな」

「うがー。目の前で死にかかっているこんなに人がいるのに放っておく気か」

「その人を手当てすりゃいいじゃん」

 ……話はどこまでも噛み合わないまま終わりそうですが。

「あるべき理想的な人間像」とか「あるべき理想的な社会像」の提示(による疎外論の提唱)をどこまでも徹底的に否定していくと、実は現行の国家行政機構の役割が限りなくゼロに近づいていったりするんですな。

 例えば教育。そもそも公教育制度って、政治社会活動(経済活動を含む)に参加する上で必要最低限の知識を万人に保証するために行うものですから、教育の意義そのものが「あるべき“教育された国民像”」と「教育されていない国民像」との差分に基づいて、まさに疎外論的に「あるべき理想像国民保証する」ことにあるわけです。

 だから、指を折って数えられる以上の数字を知らなかったり漢数字以外の漢字が読めない国民がいたって、それを「あるべき“教育された国民像”から疎外された、非本来的な国民のあり方」と捉えることは出来ないのです。そもそも「“教育された人間”の本来的な姿」が棄却されているわけですから。その人については、それはそういうものとして「まあそんな人もいるよね」と受け取っておくしかありません。学力比較がしたければ、無理に一般的な学力基準を作らなくたって、めいめいが勝手に「あいつ俺より頭よさそうだなー」「奴は俺よりバカだ」とかって思っておけばいいんです。

 警察組織も必要なくなりますよね。別に治安がいいことをもって「社会の本来的なあるべき姿」とする必要は無いんですから、もし199X年に地球が核の炎に包まれた後のような暴力の時代が到来しても、またそこで弱者を救う世紀末救世主みたいなのが出現しなくても、「これは人間が生きていく本来の社会のあり方じゃない」と嘆くことは出来ないのです。それはそういうものなのですから。

 他にも、現状を維持したり向上させたりする政策を立案・実施するためには、そもそもの発想の根源に、現状がそのまま維持された延長線上に想定される未来像や現状から何らかの意味改善された未来像が、「本来そうあるべき像」として時系列未来投影されていなければなりません。もしそうしなければ、「本来あるべき未来」と、「現在」ないしは「メンテナンスを何も行わないという条件下で現在からの延長線上に出現しうる未来」との差分を検出することが、まったく不可能になってしまうからです。比較対照としての「あるべき像」が無いのに何と比較しろってのさ。

 だから、さっきの199X年に、ミスミじいさんが種モミを必死に抱え込んで「明日がー明日がー」と叫んでいるところに割り込んで、明日の収穫のためではなく今日の俺の腹の足しのために種モミを食ってしまっても、何の問題もありません。そもそも比較すべき「明日=あるべき社会像」が存在しないんですから。「明日の収穫」なんてものは、勝手に「本来あるべき社会像」を未来投影してこしらえた幻影なのです。その幻影と現在とを比較して「人間は本来的にあるべき“明日の収穫”から疎外されている」などというのは形而上学もいいとこです。厳然として存在するのは、目の前の「種モミ」だけなんですから。これがやがて稲穂の波へと弁証法的に発展していくなんてまだ見ぬ未来を夢想するのはヘーゲルマルクスの読みすぎというものです。さあ、種モミなんて食ってしまいましょう。え、将来の人間が飢えてしまう? 何言ってるんですか、将来の人間なんてここにはいないじゃないですか。いたら今すぐここに連れてきて「飢えた人の発生」を実証してくださいよ。だいたい飢えたところでせいぜい死んで人口がちょっとばかり減るだけですから、むしろ上手い具合に人口の調節が図れていいんじゃないですか。それとも何ですか、まさかあなた、年がら年中腕に止まった蚊を叩き潰したり肉を食ったりして他の生物をどんどん殺しているくせに、ホモ・サピエンスは他の生物種とは異なって神に祝福された特別な存在だから常に生き残る価値があるだなんて、今のご時世に信じていたりするんですか?

 いやー、しっかしそう考えると、なんでよど号ハイジャック犯が『あしたのジョー』を引き合いに出したのかがよく判るなー。あれってきっと、連中にとっては「擬人化された疎外論」だったんですよ。ほら、「あしたのために」とか「泪橋を逆に渡る」とか、本来性の掛け声がビシバシ響いてるじゃないですか。ジョーの本来あるべき姿って、段平オヤジにとっては「ボクシングチャンピオン」、ジョー自身にとっては「憎いあんちくしょうリング上で叩きのめしている自分」なのであって、そうじゃない現状のジョーはあるべき理想的ジョー像から「疎外」されているわけですよ。だからこそ段平はあるべき姿の「あした」を目指して、「あしたのために その1・フォイエルバッハテーゼ」「あしたのために その2・資本論」「あしたのために その3・共産党宣言」とかってのをせっせと書き綴るし、ジョーはジョーで欠かさずトレーニングして「内臓をえぐるように(カラシニコフを)撃つべし!撃つべし!」なんてやってるし。こんなふうに「あるべき姿」を必死に目指したって碌なことにならないのは、「ジョーをバンタム級リングの上でぶちのめす自分」を「あるべき自己像」に据えて、「だめだ、この体重では俺はバンタム級リングから疎外されたままだ」とばかりにむちゃくちゃな減量を行った力石徹が、自らの死をもって示しているのにねえ。

 だから、庵野監督大月Pも角川の偉い人も、エヴァンゲリオンテレビ版の最終回でさっさと終わらせておけば、「僕はここにいてもいいんだ」→「おめでとう」パチパチパチで「そのままの姿でここにいる自分の全肯定」として話がきれいに収まったんですよ。それをよしゃあいいのに、劇場版(97年の)なんか作って「あるべきコミュニケーションのあり方」に話を膨らませちゃったりするから、「あれ、本当はこんなコミュニケーションのあり方はいけないんじゃないかな? 本来のコミュニケーションのあり方ってどんなのかな? 今の僕たちは本来のコミュニケーションのあり方から疎外されてるんじゃないかな?」みたいな方向に考えを向かせる契機を作っちゃうわけで。もう「そのままの自分まるごと全肯定」でいいじゃん。マルクス先生が「宗教はアヘンだ」って言ってるってことは、マルクスが失効した時代には文化的アヘンで疎外感を麻痺させて心の安寧を得ることもOKってわけですよ。アヘン超OK、全能感超OK!(ちょっと古いか。)

 なに、そんなのはまやかしだって? おいおい、「現実」に目を見開いて「本来のあり方から疎外されたこの社会を何とかしなくっちゃ」なんて操作主義的な観点に目覚めた人がこれ以上増えたら、一億総ポルポト化ですよ。日本全国隅から隅まで「ドキッ!ポルポトだらけの粛清大会 ──(頭蓋骨ゴロリもあるよ!」になっちゃいますよー。

 ポルポト文化大革命を呼び込みたくなければ、そんな疎外論チックな発想はさっさと捨てちゃって、身の回りの小さなことに幸せを見つけていきましょう。そうすればほら、きっと水さんだってきれいな結晶を作ってあなたの心の美しさを祝福してくれますよ。おっと、非科学的だなんてツッコミは無しですよ。「科学的に正しい世界観を持った国民」というのだってやっぱり“本来的なあるべき像”なんですから、そんなものを持ち出したら途端に「君の世界観はあるべき科学世界観から“疎外”されている、再教育しなければ!」なんてことになってポルポト化ですよー。

 ……結局のところ、何かしら広義の「啓蒙」的なこと、つまり人々の精神知的要素が無知蒙昧の「闇」に閉ざされているところへ「光」をもたらそうという時系列進歩の考え方は、どうしても「光」の比較対照物として「闇」を必要とするし、また「闇」の比較対照物として「光」を必要とします。社会のよりよき状態を想定するところでは、その対照物として「よりよくない現在=闇」が、「光から疎外された状態」として持ち出されますし、現状を批判する場合には、それの比較対照物として仮定された「よりよき未来=光」が、一種のイデアとして持ち出されるわけです。「啓蒙」と「疎外」は、そういう意味でコインの裏表のように、切っても切り離せない関係にあります。

疎外論」を完全に回避しようとすれば、結局のところはよりよき方向への変化という考えを完全に捨てて、「あるべき姿など無い、世はただあるがままにある」という考えに徹するしかないのでしょう。税制改正の提言は「よりよき税制度から人々が疎外されている」という現状認識の現われだし、著作権を巡る議論は「よりよき(ry」だし、そういうのを全部回避するとしたらもう、時系列的に制度などが変化した部分については「ああそう、変わったのね、まあそんなもんでしょ」、変化しない部分については「ああそう、変わらないのね、まあそんなもんでしょ」と等閑視するくらいしか手はなくなります。スピノザあたりがそんなことを言っていたような気がしますが。ニーチェ運命愛もちょっと似てるかも。

 ……でもこれって、

「“人はあるべき姿から疎外されている”なんてことを考えて現実を直視しようとしない連中世界観は、人が本来的に持つべき物の見方から疎外されている!」

という主張にはならないのかな? それとも、「“あるべき姿”の主張がマルクスの論点に基づいていればそれは疎外論でありポルポトだが、マルクスに基づいていなければ疎外論ポルポトではない」という前提でもあるのかな。もしそうだとしたら、悪の大魔王マルクスの「悪のカリスマ」性の長命ぶりには驚くべきものがありますな。それとも、冷戦終結によって魔王バラモス(=マルクス)が死んだと思ったら、その背後で真の黒幕である大魔王ゾーマ(=真・マルクス)はしっかり生きていたという、ドラクエ3型のオチなのかしら。早乙女ジジイ

 ……この「反疎外論シリーズ、いろいろ応用がききそうだな。

 例えば、

「やい臨獣殿! “強い者が世界を統べることこそ本来の姿、その本来の姿から疎外されたこの世界を変えてやる”なんて言って人々を苦しめるなんて、このゾワゾワのポロポロ野郎!」

「なーに言ってるのよ、あんたたちこそ“本来の獣拳は正義の拳、いまはそこから疎外されている状態だから臨獣殿を倒してあるべき姿に戻す”なんて言って、力ずく正義押し通すポルポトじゃないの。文句があるなら実力であたしたちをねじ伏せてみなさい、このカクシターズ!」

とか、

「おばあちゃんが言っていた、俺は天の道を往き総てを司るってな」

「天の道という“本来あるべき道”のイデアを前提して、万人をそこから疎外された者として見下すとは、君も愚かな男だな。社会においてもっとも重要なこと、それはパーフェクトハーモニー……完全調和だ」

「そう言いながら俺をつけ狙うのも、おまえの言う中和だか調和だかのうちか」

ライダーは二人も要らない」

「一人のライダーに率いられた組織の完全調和……そこからはみ出した俺は疎外された存在ということか。おばあちゃん、いやポルポトは言っていた、そういう存在は完全調和のイデア世界には不要だとな」

貴様、俺を疎外論者に仕立て上げるつもりか……だが俺は貴様を倒す。そうしなければ、俺が俺でなくなってしまう!」

「やはり“本来の俺”か……おまえは天の道を外れた」

(去っていくザビーゼクター

「!……待ってくれザビーゼクター、戻れ、戻れ……戻れぇーーーー!」

(半年後)

「もう疎外論も物象化論もないんだよ。影山、俺と一緒に転向しよう……。天道、おまえはいいよなあ、どうせ俺なんか」

とか。

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