人間は視覚的な情報を得たとき、まず前注意的なレベル(無意識な状態)で認識し、その後、注意的なレベル(意識的な状態)で対象が何であるのかを認識すると考えられている。 デザインにおいてある要素を他の要素よりも目立たせるには、前注意的なレベルで認識できる8つの要素を単独で、または組み合わせて用いると効果的である。 色調 色を変えて目立たせる。 同系色同士よりも、補色となる組み合わせで用いるとより効果的である。 位置と整列 位置を変えて目立たせる。 人は複数の要素が並んでいると、その並び方に何らかのきまりを見出す。そのきまりに反した位置にあるものは他のものより注目しやすい。 明度 明るさを変えて目立たせる。 全体が暗く、注目させたい要素が明るい時は「ポジティブ(選択されている、凸である)」な印象に、逆に全体が明るく、注目させたい要素が暗いときは「ネガティブ(選択されていない、凹である)」な印象にな
2012年05月01日21:34 Ruby 正規表現で最短マッチを知っとくとちょっと便利かも 正規表現ってあるじゃないですか。そうです。アレです。 とっても便利で、いろんな場面で役立つと思うんですが、ときどき最短マッチを使いたくなって「最短マッチってどう書くんだっけなぁ?」ってなってググることがあります(よね!) 通常は最長マッチになる 通常、正規表現内で * とか + とか付けると、直前の表現の0回/1回以上の繰り返しを表しますが、この書き方だとできるだけ長い要素にマッチしようとします。大事なことなのでもう一度言います。できるだけ長い要素にマッチしようとするんです。 大抵はそれで構わないんですが、ときどきそれでは困るケースがあります。例えばこんなケースを考えてみましょう(あんまり良い例が思いつかない)。 ・"名前(ニックネーム)"という形式 ・名前と(ニックネーム)の間には半角or全角ス
最短マッチの意味自体はそんなに難しくない。まず最初に通常(最短マッチでない)の場合の説明。 <title>cloned.log</title>という箇所に対して <.*>というパターンを書いてしまうと <title>cloned.log</title> の全てがパターンにマッチしているとみなされる。途中で>が一度出現しているけれど、最後に出てきた>までが「一つのパターン」としてみなされる。 何が困るかというと、例えば上記の場合だとタグだけを引っ掛けたいときに困る。要は、 <title>cloned.log</title> としたいとき。ここで登場するのが最短マッチ。ここの例で言えば、<から始まって最初に>が出てくるまでを「一つのパターン」としてみなしたい訳だ。答えから書くと、 <.*?>となる。?が最短マッチのメタ文字。 ここまでだとそんなに難しくない印象なので、応用して、<a name=
「.*」や「.+」を使うと、限りなく連続した文字を表します。 これは非常に便利なのですが、予想以上に長くマッチして、思ったように動かないことがあります。 これを解決するためには「?」を付加して最短一致するように仕向ける方法があります。 また、ここで説明する「?」は「直前の文字の0回または1回に一致」とは違います。 文字は同じですが、まったくの別物です。(記述する位置で見分けてください。) たとえば、HTMLのタグを消す場合、このように書いたとします。(Perlの置換文法) s/<.+>//g これでタグは消えるのですが、タグだけではなく、タグに挟まれた間の文字まで消してしまいます。(下線部分) <P>abc</P> 理由は最長一致モードで動作しているからです。 動作をみると、途中に「>」が出てきているのですが、そこでは止まらず、最後の「>」までマッチしていま
<html> <div></div> <div class="content"> <b>内容<b/><br /> <img src="#" /> <p>ほげほげほげほげ</p> </div> <div></div> </html> 上のようなHTMLがあるとします。<div>の前後にもhtmlは書かれています。 そこから正規表現で<div class="content">~~~</div>の中身を取り出したいのですが、できません。 言語はPHPで、 /<div class=\"content\">.*<\/div>/ と書いてみたんですが、改行などがありうまくいきませんでした。 どのようにに記述すればうまくいくんでしょうか。
久しぶりに mbstring モジュール(特にマルチバイト正規表現)のソースコードを眺めていたのですが、いくつか面白い(知らなかった)挙動がありましたでメモしておきます。 確認した PHP のバージョンは 5.4.10 ですが、PHP 5.0 以降であれば、あまり変わりません。 パターン修飾子 m と s の解釈 これまでは Perl 互換の正規表現と同じと思っていたのですが、マルチバイト正規表現のパターン修飾子 m と s は Perl 互換の正規表現(preg)と挙動が違います。 mb_ereg_replace() と preg_replace() で、改行を含む文字列置き換えの結果を比較すると以下のようになります。 パターン修飾子 s(マルチバイト正規表現:ONIG_OPTION_SINGLELINE, Perl互換正規表現:PCRE_DOTALL) $ php -r 'echo m
Regarding the validity of a UTF-8 string when using the /u pattern modifier, some things to be aware of; 1. If the pattern itself contains an invalid UTF-8 character, you get an error (as mentioned in the docs above - "UTF-8 validity of the pattern is checked since PHP 4.3.5" 2. When the subject string contains invalid UTF-8 sequences / codepoints, it basically result in a "quiet death" for the pr
With the (?R) item you can link only to the full pattern, because it quasi equals to (?0). You can not use anchors, asserts etc., and you can only check that string CONTAINS a valid hierarchy or not. This is wrong: ^\(((?>[^()]+)|(?R))*\)$ However, you can bracketing the full expression, and replace (?R) to the relative link (?-2). This make it reusable. So you can check complex expressions, for e
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く