「Expression」を含む日記 RSS

はてなキーワード: Expressionとは

2010-06-25

仕事切り上げて

ゆっくりワインでも飲みたい

メール作法

How to Begin and End Email

Beginnings and endings are a challenge in most activities, but in email getting off to a good start and ending positively will strengthen the communication and increase understanding.

Start with a specific subject line.

Choose the better subject line in each pair below:

1. a. New Phones

b. New Phone Installation: Your Action Required

2. a. Update on Development of Sales Model

b. Status Update

3. a. Summer newsletter

b. 10 Great Tips for Summer vacation


In number 1, the second choice conveys a sense of urgency and action, whereas the first choice falls flat. In 2, the longer title focuses the reader on which update the email is explaining. In 3, you don’t really have much choice. Who would take a?

Next comes the greeting.

Examples:

Hello, Robin.

• Hi, Fred and Lauri.

• Hi, team.

• Greetings, everyone

• Good morning, Sayed. (If Sayed this message in the morning)

• Jian, we are looking forward to meeting you next week.

• To: Finance and Administration Team

• To all employees:

• David,

• Ruth, Mala and Felicia:

Dear Mr. Mathews

The last five examples must be on a separate line at the top of the message. All the others can be either a separate line or at the beginning of a paragraph.

Choose the greeting that matches your relationship with the reader(s) and the purpose of the message. “Hi” is friendly but too informal in certain situations—for example, in response to a request for a proposal. “Hello” is friendly and professional. “Hey”is too informal and slangy for most messages.

“To” followed by a pronoun like “all” or the name of a group sounds professional but does not convey warmth. Warmth is required in all messages, but please remember that you must always consider the position of the receiver.

Avoid gender-based greetings such as “Ladies.” Even if the group you are writing it is all women, some among them will object to this greeting.

Do not greet people whose name is included on the Cc line. Only greet people whose names are on the To line of the email.

The punctuation of greetings is a topic for discussion. All the punctuation used in the list above is correct. Some people use “Hi team” and “Hello Robin” without the comma, but traditional writers retain the comma. The reason is that these words are in “direct address.” When we directly address the reader, as in “Hi, team” (or in the example that begins with “Jian”) the name is separated from the other words by a comma.

Dear Mr. Mathews” is followed by a colon in a business letter and in an email that replaces a business letter. However, it is also acceptable to use a comma after a

Dear” greeting in a business email.

In a quick exchange of email with someone it is not necessary to continually greet your reader. Compare such an exchange with putting the person on hold on the telephone. When you return to the phone call, you say, “Thanks for holding. I have the information: rather than “Hi Laurie.”

The last sentence of an email is like the last words of a phone call. They may be a quick signoff or a courteous close, depending on the formality of the communication.

Examples:

• See you in Tokyo!

• Have a great trip!

I will email you in August to schedule lunch.

• Please call me again with any questions

Thanks again for all your help with the design.

• Thank you for your cooperation. We appreciate the opportunity to work with you.

Avoid continually using “Have a great day!” or similar expression as your closing sentence. It became meaningless with constant use and it is a bad fit with email that communicates a policy or serious announcement.

It is not wise to save a request for action or approval until the end of the message. Email readers do not read to the end of a message when they believe they have gotten the main point already.

A complimentary close—yes or no?

Business letters typicall end with phrases called “complimentary closes” such as “Sincerely yours,” “Best wishes,”and “Best regards.” A complimentary close is not required in email. However, business email often uses such a close to sound formal, look professional, or simply communicate courteously.

Examples:

• Sincerely,(the most formal of the list)

• Best regards, (professional)

• Warm regards, (professional and warm, as you would expect)

• Regards, (less friendly than the other 2 regards choices)

• With best wishes, (or) Best wishes, ( professional)

• With thanks, (professional and grateful)

• Ciao! (friendly and rather informal)

• Cheers, (friendly)

A word like “Greetings” does not belong in a close. It may be used in the last sentence, though, to greet others who might see the message:

• Please give our greetings to Dr. Carr

• Greetings to your colleagues in Systems Research

Although people frequently use “Thanksas a close, it is not standard, and careful writers avoid it. Do not use “Thanks in advanceas a close, because many people find it presumptuous. Rather than “Thanks” or “Thanks in advance,” create a better sentence, such asThanks for considering my request.” Or use “With thanksas a complimentary close followed by a comma.

Advice for those who receive less-than-perfect Email. You will sometimes receive email that is less than perfect, which means you might feel a bit offended by them. My advice to you on this is to get through them and leave them behind. Bring a bright smile to your face and a kind tone to your email reply. Forgive those whose writing was clumsy, abrupt, or annoying. They were merely experiencing moments of being human and imperfect.

2010-06-20

でも、通じる英語すらできなきゃダメダメでしょ?

http://anond.hatelabo.jp/20100620143255

主観的な意見だけど、TOEIC600-700位ってのは通じる英語の最低レベルだと思うのですよ。

意志決定レベルの人たちがそのレベルにすら到達していないという現状が存在していることを問題にすべきなんじゃないかなーと。

で、ここ数日来の、「日本人英語ができるようにならんとグローバル化を生き残れない!」という論調はその当たりの事をついているんじゃないのかなー、と思うんです。

私の知人、とある国のプロジェクトに行っているんだけど、良く嘆いているのは、

日本人通訳がいないと何も出来ない奴らばっかり。それも所謂『偉い人』に。」

ということです。

何かをExpressionしたくても、

本人→日本人通訳→現地人通訳→聴き手

というプロセスを踏んでしまうので、

伝言ゲームで陥りがちな罠、「情報の抜け落ち」

・人を余計に雇わなくちゃいけないので、全体的なコスト競争力の低下

に陥って、勝負にならない、とのこと。

せめて、本人が「通じる英語レベルでも使えてくれてれば、

本人→現地人通訳→相手

となって、随分スマートになるんだけど、こないだ日本に帰ってきたときも嘆いていました。

だから、元増田さんの、

しかし、英語世界において、言葉武器に戦うためには、「通じる英語」では全然足りないのである。その意味では、 TOEIC600と900の違いは誤差でしかない。結局勝負を分けるのは「どれだけ優秀なネイティブ参謀を捕まえられるか」なのだ。

というのは確かにそうだと思います。

でも、だからこそ、意志決定レベルの人には、最低限「通じる英語」ぐらいの能力は持っててもらわないと、なのだと思います。

「通じる英語」すら使えないのでは、優秀なネイティブ参謀を捕まえる事なんてとても出来ないのだと思うのですよ。

それが、楽天が「英語使えない役員は馘首する」という話につながっているんだと思うんです。

それからそれから

日本以外の外国って、何も英語ネイティブの所ばかりじゃないですよ?

これからのビジネスチャンスは、むしろ英語の国じゃないところにあるんじゃないでしょうか?

テレビネット情報鵜呑みにして行っているだけで、本当の最前線を見ている訳じゃないですけど、楽天インドネシアに行くようですし、ひととき前はアフリカの話が随分注目されていましたよね?

外国語ネイティブレベルに扱えるようになるのは、努力だけではない何かが必要なのはわかります。

それに、「通じる英語レベル日本人参謀におくというのは、戦うのに無駄が多すぎます。

だからこそ、ネイティブ参謀重要になってくるわけですよね?

その参謀を捕まえるにはどうしたらいいのでしょう?やっぱり「通じるレベル英語」が必要なんじゃないでしょうか?

最も、アフリカなんかだと、現地人側にも「通じるレベル英語」を出来る人が少なくて、違った苦労がおありだ、とも聞きました。

それにしたって、「通じるレベル日本語」を話すネイティブよりも、「通じるレベル英語」を話すネイティブを見つける方がよほど簡単です。

だから、グローバル化を生き残ろうとするのならば、どんな職域であれ、最低限「通じるレベル英語」が必要なのではないのかな、と思うわけです。

とりわけ、どんな組織であれ、どんなレベルであれ、意志決定をする立場にある人であれば。

2009-12-14

かんちょー

学内Webメールシステムが、もろにCSRFXSSのよわよわのシステムでした。NEC系のメーカーASPだったようだけど。

WebメールXSSCSRFがあるというのは本当に最悪で、「開いただけでメールボックスアドレス帳が全部どこかに送信されてしまう」ような攻撃メールが作れてしまうことを意味します。

で、担当部門がどこだかわからないのでメディアネットワークセンターというそれっぽい部署に教えてあげたんだけど、とにかく反応が遅い。対策の第一段階は即日システム停止することですよ、とまで書いてあげたのに。

2ヶ月たって何も修正がされないので、研究室内のゼミで発表してみました。情報系でも、知らない人はCSRFとか全然知らないからね、うちアルゴリズム系なのでみんな「Webってこんな攻撃ができるのか」って感心。教授はあわててどこかに電話

そしたらすぐに、「どこがそんなにまずいのか」と相談の電話が折り返されてきて、(即時停止レベルだって教えたじゃん)と思いつつも、「このメールを開いた後、自分の送信箱を見てご覧なさい。見覚えのないメールが送信されていませんか?」と攻撃例を教えてあげました。寸止めかんちょー。

これで即時停止だろうと思ったら、結局それから4ヶ月間修正が入らないまま運営が継続、そして「これで直りましたよね」と連絡が来たのでテスト環境版を試してみると、この「修正版」は script タグを無効にするだけで onload とかまったく手を付けないザル修正でした。

それを指摘したらしぶしぶイベントリガ系も消してくれたけど、CSSXSSとか不完全Shift-JIS文字とかexpressionとか知りもしないんだろうなー。セキュリティのこと知らないなら、HTMLメール扱う機能ごとばっさり削除が唯一の正解です。

本気でかんちょーしようと思えば簡単でした。自己増殖メールを誰かにぽんと送るだけでたぶん3日以内にメールシステム麻痺して、実質停止に追い込めたはず。あ、それじゃかんちょーどころか直腸裂傷か。でも、それで全員のクオータがあふれてしまえば真に悪意のある攻撃メールを受信する余地なくなるし、セキュリティ保護できたことにならないかな。

で、本当にそれをしなかった理由はひとつだけ、攻撃テストメール自分に送りまくっていたことがメールログに絶対残っているし、それで犯人とばれて退学とかいやだったから。うちの大学中退じゃなきゃハクがつかないんです。

2009-11-04

http://anond.hatelabo.jp/20091103183030

今じゃこれ、学生なら全部無料で使い放題なのに

何いってるのやら

与えられた自由を探しもせず、頭の上から降ってくるもんだとおもってる奴は

結局何もできないって事さ


Visual Studio 2008

Visual Studio 2005

Windows Server 2008

SQL Server 2008 Developer Edition

XNA Game Studio 3.0

Expression Studio 3

Microsoft Robotics Developer Studio

XNA Creators Club 1 年間メンバーシップ



http://www.microsoft.com/japan/academic/dreamspark/default.mspx

2009-08-07

JavaScriptラムダ式

function returner() {
    return 100;
}

function profiler(aFunction) {
    var begin = new Date();
    for (var i = 0; i < 500000; ++i) {
        aFunction();
    }
    var end = new Date();

    return end - begin;
}

function profileLambdaExpression() {
    // lamda expression
    print("lamda expression : " +
          profiler(function () returner())
         );

    // equal to above expression
    print("normal form : " +
          profiler(function () {
                       return returner();
                   })
         );

    // not return the value
    print("return no value : " +
          profiler(function () {
                       returner();
                   })
         );    
}

profileLambdaExpression();

&gt;&gt; lamda expression : 1521

&gt;&gt; normal form : 1436

&gt;&gt; return no value : 1431

SpiderMonkey 1.8.0 pre

2009-05-19

[] <英語English 2

[Methods] 学習方法 How to study English

  1. リンク集無料でココまで学べます! 英語学習サイト -INTERNET Watch
  2. 実用的な英語を習得する方法 : 目次  « The Wisdom of CrowdsJP
  3. 英語学習情報の特徴メモ - かちびと.net
  4. 訳すな、頭から読め - 鰤端末鉄野菜 Brittys Wake
  5. Podcast英語リスニング勉強をしてる奴ちょっと来てください:アルファルファモザイク
  6. 英語コンプ馬鹿でも投資ゼロTOEIC900に達するたったひとつ方法
  7. 英語学習に役立つ、映画脚本スクリーンプレイ)を無料で手に入れられるサイトの紹介 | 口コミ発信!モノ人
  8. 英語学習に役立ちそうなTwitterアカウントまとめ - はてな読み
  9. podcastの飽きない英語コンテンツ、2ヵ月後
  10. 英語 - NAVERまとめ
  11. おすすめ英語学習サイト英会話】 - NAVER まとめ
  12. ネット勉強できる英語サイト まとめ - NAVER まとめ
  13. 無料で使える英語学習サイト12選 - NAVER まとめ
  14. 英語勉強を始める人は必ず見ておきたい英語学習サイト&ツール | うましかニュース
  15. 英語】アソシエの『やり直し「英語勉強法』が濃厚だった件:マインドマップ読書感想文

[Media] ニュースサイト他まとめ

  1. Voxalead News
  2. TODAYshow.com
  3. CBS Evening News with Katie Couric - Latest News &amp; Videos - CBS News
  4. The Big Idea Video - CNBC.com
  5. Big Ideas - Exploring the Essential Questions of Education

[Vocablary] 語彙/単語

  1. フリー英単語リストをまとめてみた 読書猿Classic: between / beyond readers

[Grammer] 文法

  1. 基礎から英語学習の目次-英語喫茶英語・英文法・英会話
  2. 社会人のためのやり直し英語講座 英文法.COM» 第1講の講義全部紹介!(講義編)
  3. Get you !! English !!〜わかりやすい英文法【書籍化
  4. 日本人英文法の意外な穴
  5. Liberty 英語表現/英熟語,用語,手紙,ことわざ,略語,メルマガ,句動詞
[Preposition] 前置詞
前置詞は全部でおよそ150種類ある、と。
  1. List of English prepositions - Wikipedia, the free encyclopedia
基本的な使用例と練習問題
  1. English Prepositions
  2. English Prepositions and Verbs
  3. Prepositions of time - english-at-home.com
  4. Prepositions and adjectives - english-at-home.com
  5. A BRIEF EXPLANATION OF PREPOSITIONS
イメージでつかむ
  1. YouTube - Lesson 3c - Prepositions - English Grammar
  2. YouTube - ネット予備校6 英語 イメージでとらえる前置詞
とにかく練習
  1. ENGLISH PAGE - Prepositions and Phrasal Verbs
  2. Prepositions
  3. English Study Quiz - Prepositions
  4. 前置詞の問題集 イメージ攻略しよう!
おまけ
  1. 【前置詞3分クリニック】be tired from/of復習 + 接続詞副詞のthough [まぐまぐ!]
  2. 接置詞 - Wikipedia
  3. Prepositions Worksheets

[Conjunctions] 英語接続詞を知って、文章の作り方、考え方を理解する。語学学習関連

等位 Coordinating Conjunctions

相関 Correlative Conjunctions

従属 Subordinating Conjunctions

  1. Grammatical conjunction - Wikipedia, the free encyclopedia
  2. Linda Bryson's List of English Conjunctions
  3. Conjunctions
  4. Conjunction Junction
  5. List of Conjunctions
  6. CONJUNCTIONS
  7. YouTube - English Grammar: Diagramming Sentences in 6 Steps

[Phrases] 定型文書、よく使われるフレーズテンプレート Useful phrases, letter template

expressing sympathy

お悔やみの言葉

  1. What do you say when you want to express sympathy? - What Helps. What Hurts. What Heals. - CarePages
  2. Sympathy Quotes, Sayings, Mourning, Bereavement, Loss, Death of Loved One
  3. How to say "I'm sorry" without actually saying it | Ask Metafilter
  4. VOA News - Finding the Right Expression of Sympathy When Someone Is Grieving
  5. sorry for your lost expressing sympathy

褒め言葉

  1. ほめことば99 改訂版
  2. 英語で100のほめ言葉
  3. 英語褒め言葉集 - ◆ラテン旦那大和撫子妻◆ - 楽天ブログBlog
  4. 英語での褒め言葉(単語)が沢山載っているページを教えてください。人力検索はてな

電話フレーズ

  1. How to Finish a Phone Conversation Without Being Rude - wikiHow
  2. An Actual Phone Conversation. | KnowProSE.com

会話一般

  1. Everyday English in Conversation
  2. Business Communications

[Unedited] 未編集備忘録 Transient stock/ Memorandum

  1. 英語勉強を始める人は必ず目を通しておきたい英語学習サイト&amp;ツール < インターネットIT | RapidHack(ラピッドハック)
  2. Is "Word Power Made Easy" by Norman Lewis available online (an interactive version and/or ebook)? - Yahoo! Answers
  3. 英単ワールド
  4. bab.la:それはあなた言語習得入門
  5. SparkNotes: Today's Most Popular Study Guides
  6. 英語学習に適したKhan Academyの教育ビデオ(とその翻訳ブログ) - YAMDAS更新履歴
  7. Khan Academy
  8. Teaching English | British Council | BBC
  9. Morgan Online - Abbreviations (AJAR) "Acronyms, Jargon, Abbreviations, and Rubbish (AJAR)"
  10. English 2126: Modern English Grammar: Teaching Usage: A Discussion
  11. Common Mistakes in English - Quizzes
  12. Learning Resources
  13. ESL Lesson Plans to Download
  14. FML: Your everyday life stories
  15. 意外と通じる!?通じない!?平均日本人英語
  16. ディスカッション - sci.lang.japan | Google グループ
  17. 英語発音入門
  18. YouTube - Learn Business English ESL Vocabulary - Marketing Vocabulary
  19. ESL Gold
  20. Randall's ESL Cyber Listening Lab - For ESL/EFL Students
  21. Multiple Language Guides - how to articles from wikiHow
  22. Difference between "Here you are " and "There you are"
  23. Teachers of English to Speakers of Other Languages, Inc. (TESOL)
  24. Classic British and American Essays and Speeches - Great Essays and Speeches by British and American Writers
  25. English Irregular Verbs
  26. My First Dictionary
  27. Read.gov: Online books and resources for literacy &amp; reading for everyone
  28. 英語好き集まれ!
  29. smart.fm - it's where you learn - smart.fm
  30. 英語TOEIC英検学習法、無料教材(英単語・英文法)の提供サイト
  31. Japan-in-Motion: Japanese Movies for Culture/Food/Sightseeing
  32. History and Politics Out Loud: a searchable archive of politically significant audio materials
  33. National Archives and Records Administration
  34. Learn native pronunciation for every language in the world. Forvo, the pronunciation guide
数字の読み方 数字にまつわること
  • 数字数学に関する読み方に迷ったらひとまずここで
  1. WebMath - Solve Your Math Problem
  2. English numerals - Wikipedia, the free encyclopedia
  3. Smories - new stories for children, read by children
  4. Beyond Books Program: Reading between the Lines
[日本を紹介する]
  1. 日本文化英語で紹介しよう!】JAPANESE CULTURE CENTER
  2. 日本文化キーワード事典
  3. 外国人のための日本生活、国際交流日本語学サイトひらがなタイムズ
  4. 英語日本を紹介

語学学習サイト個人的リンクメモ / Lists of Language Learning Links)

http://anond.hatelabo.jp/20090101193230

http://anond.hatelabo.jp/20090218024319

2009-02-26

チラ裏, on the Japanese language

One characteristic of the Japanese language is that it can express social identities by the mode of speech adopted: it can sound polite, aggressive, old, young, manly, girly, etc. just by changing how you call yourself. The content of the utterance itself does not have to change. Of course, this can be seen in many languages, even English. What is unique to Japanese, however, is that the degree of this embeddedness of the social identity in the utterance is very high. Many other language can express this through the body-language or non-verbal operation of the body. Japanese, on the other hand, make use of the verbal very strongly.

On the web, this may cause an interesting phenomena which cannot be observed in the English sphere: strong schismogenesis. Take the culture of 2ch, for example: language used there strongly differs from the 'normal' Japanese language, yet comprehensible. This creates a certain type of discourse that is differentiated from the 'real' world. Moreover, people may accuse each other for adopting a certain mode of talking.

Again, this is not to argue that other languages do not have this characteristic. In Britain, for example, the vocabulary used by the higher class and the lower class is very different. Youths may use a certain form of abbreviation (e.g. "r u ok?"). However the Japanese language can encompass something much more than that. It can express the class, gender, feelings, level of politeness, etc just by changing the verbal expression, which may result in debasement of the value of non-verbal expression.

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-04-07

Proxomitronでやってみた

こっちのほうが処理が軽くていいや

filter name masuda tag abone

URL match anond.hatelabo.jp/*

matching expression

(<font*>)$SET(0=)|

(<i[^m]++>)$SET(0=)|

(<strike*>)$SET(0=)

Replacement Text

しっかしコピペとはいえひとつの投稿に900組以上のfont i strikeタグを突っ込むとかよーやるねぇ。

2008-03-14

諸君 私は脆弱性が好きだ

諸君 私は脆弱性が好きだ

諸君 私は脆弱性が大好きだ

PHPが好きだ

XSSが好きだ

SQLインジェクションが好きだ

CSRFが好きだ

UTF-7が好きだ

expressionが好きだ

シェアウェア

Web

Google

スペシャルねこまんま

LiveHTTPで

Filemonで

Regmonで

OllyDbgで

Perl

この地上に存在するありとあらゆる脆弱性が大好きだ

セキュリティに関して口うるさく言っているサイト脆弱性をいとも簡単に見つけるのが好きだ

大企業サイトGoogleによって脆弱性発見された時など心が踊る

Googleがあっけなく脆弱性を見つけてしまうのが好きだ

Perl馬鹿にしていた奴のアカウントを乗っ取った時など胸がすくような気持ちだった

粘り強い同業者MS Officeシリアル認証と格闘している様が好きだ

PHP覚えたての野郎共が続々と脆弱性を作り出していく様など感動すら覚える

気に入らない奴のPCトロイの木馬を忍ばせ奴の個人情報Winnyネットワークに流れてゆく様などはもうたまらない

精魂込めて更新していたであろうWikiを滅茶苦茶にするのが好きだ

必死に守るはずだった同業者が次々に逮捕されてゆく様はとてもとても悲しいものだ

FBIに追いまわされ泥棒の様に捕まる恐怖と戦うのは屈辱の極みだった

諸君 私は攻撃を地獄の様な攻撃を望んでいる

諸君 私に付き従うクラッカー諸君

君達は一体何を望んでいる?

更なる攻撃を望むか?

情け容赦のない糞の様な攻撃を望むか?

鉄風雷火の限りを尽くし三千世界の鴉を殺す嵐の様な政府との闘争を望むか?


『攻撃! 攻撃! 攻撃!』


よろしい ならば攻撃だ


我々は渾身の力をこめて今まさに振り降ろさんとする握り拳だ

だがこの暗い闇の底で半世紀もの間堪え続けてきた我々にただの攻撃ではもはや足りない!!

大攻撃を!!

一心不乱の大攻撃を!!

我々はわずかに小数

セキュリティ専門家に比べれば物の数ではない

だが諸君は一騎当千クラッカーだと私は信じている

ならば我らは諸君と私で総兵力100万と1人の集団となる

我らを忘却の彼方へと追いやり、眠りこけている奴らを叩きのめそう

髪の毛をつかんで引きずり下ろし 我々の方が強いことを眼(まなこ)をあけて思い出させよう

連中に恐怖の味を思い出させてやる

連中に進入される恐怖に怯えながら眠る夜を過ごさせてやる

連中に我々の技術を思い知らせてやる

天と地のはざまには奴らの哲学では思いもよらない事があることを思い出させてやる

一千人の吸血鬼クラッカー達で

世界を恐怖に陥れてやる

目標 情報処理推進機構!!

2007-08-09

http://anond.hatelabo.jp/20070809184223

でも別売りソフトでも安定してるものってそう無いぞ。

Canvasはどこに行ったんだっけ

インスピレーションは便利だったのに…

Strataって一応未だあるんだよね

ベクター系ペイントツールのExpressionは最終的にMicrosoftが買ったけど、これもう原形留めてないよね?

ロータスとかジャストシステムユーザーは未だ使ってるのか?ノーツは?

クラリスワークス改めAppleWorksはどういう幕のひきかたしたんだろ

独自拡張してもNetscapeについていくつもりだったのに途中でひっくり返しやがって

AppleにいたってはOS9どころかOSXの10.3より前を無かったことにしてるだろ

2007-04-24

スクリプトをなんとかして実行してやろうというひね根

http://www.atmarkit.co.jp/news/200704/23/eweek.html

これを見て、へーと思ったので、何ができるんにゃろめとあれこれかんがえてみたりした。


<script type="text/javascript">alert('test')</script>
<div onClick="alert('test')">test0</div>
<A href="javascript:alert('test')">test1</A> 
<A href=vbScript:MsgBox("test")>test2</A> 
<A href="javas	cript:alert('test')">test3</A> 
<A href="javas&#09;cript:alert('test')">test4</A> 
<div style="font-size:!!expression(alert('test'));">test5 !!を外せば動くけど死ぬよ</div>
<iframe src="test.html">test6</iframe>

ECMAScript

LiveScript

JScript

ジャワティーストレート

JavaTeaScript

http://www.fureai.or.jp/~tato/JS/scripttg.htm

にゃ!?

こんなにいっぱいスクリプト言語あるの・・・?

2006-12-28

悪い人は鍵を掛けたところで入ってくる

たとえば www.hatema.jp とかとって、そこにログイン画面作ってフィッシングサイトを作る。

捨てアカとって、JavaScriptつかってリンクがそこへ飛ぶ様にしておくエントリを書く。

http://anond.hatelabo.jp/20061227145016


使いやすいからJsってだけで、悪意をもって振舞えば別にJavaScriptつかわないでも現状のもと実現できるよね。

まちちゃんの可愛いところはマグロ解体ショーを人前で実践してくれるところ。

切り身のトロがメバチマグロなのか黒マグロなのか気にせずにショーとして楽しめるところ。

そもそも今回はJsなんか使われてないよね?

クライアント側に何をするのかより、サーバー側になにをするのかだと思うんだ。


鍵をいくつもつけまくるのは確かに抑止力にはなる。だけど不便じゃない?

いろんなブログパーツがあるけどはてなでは自由に使えないじゃない?

<a href="javascript:alert('こんにちはこんにちは!');">マグロ解体ショー</a>

こんな簡単なスクリプトからcss/expression()まで弾くぐらいJsガチガチブロックしている理由はさすがに少し技術的な固執じゃないかなと思う。スタイルシートタグに適用するのも禁止とか……。

そのわりに肝心なアカウント認証の部分が緩いからこういうことになるんじゃないかな。

リンク踏んだだけでアフェリエイトID書き換えられるとか。

ドアには普通の鍵でいいから金庫の鍵だけはもうすこししっかりしてねという所感。

特にブログなんて公開するためのものだから、お店のドアが鍵だらけっていうのもどうなのかな。


金庫室って書いた鍵の緩いニセのドアを設けてそこを開けたお客さんをマークしておくとかすればいいと思うんだ。

戯言。

- 転職ならen
- 派遣ならen
 
1ページ中1ページ目を表示(合計:14件)