メモの日々


2012年07月29日(日) [長年日記]

[dev] 何ともマッチしない正規表現

以前にメモした気がするがメモしていない模様。

に、

(!?)
[^\s\S]
[^\w\W]

が紹介されていた。なるほど。

[java] java.util.Scanner#findWithinHorizon()

ScannerクラスのfindWithinHorizon()メソッドの仮引数horizonの意味が分からなかったのでメモ。horizonは検索対象とする文字数を意味するようだ。テストをメモ。

import java.util.Scanner;
import org.junit.Before;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

public class ScannerTest1 {
    private Scanner scanner;

    @Before
    public void setup() {
        scanner = new Scanner("珈琲\n紅茶");
    }

    @Test
    public void horizon5() {
        assertThat(scanner.findWithinHorizon("紅茶", 5), is("紅茶"));
    }

    @Test
    public void horizon4() {
        assertThat(scanner.findWithinHorizon("紅茶", 4), nullValue());
    }

    @Test
    public void horizon0() {
        assertThat(scanner.findWithinHorizon("紅茶", 0), is("紅茶"));
    }
}

[java] java.util.Scannerは先頭/末尾の空トークンを無視する

Scannerのトークンの切り出し方も分かりにくかったのでメモ。普通は空トークンも切り出してくれるんだけど、先頭と末尾だけは無視してしまうようだ。これは不便だなあ。

import java.util.Scanner;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

public class ScannerTest2 {
    @Test
    public void comma0() {
        Scanner scanner = new Scanner("one,two,,");
        scanner.useDelimiter(",");
        assertThat(scanner.next(), is("one"));
        assertThat(scanner.next(), is("two"));
        assertThat(scanner.next(), is(""));
        assertThat(scanner.hasNext(), is(false));
    }

    @Test
    public void comma1() {
        Scanner scanner = new Scanner(",one,two,,");
        scanner.useDelimiter(",");
        assertThat(scanner.next(), is("one")); // いきなりoneが得られてしまう!
        assertThat(scanner.next(), is("two"));
        assertThat(scanner.next(), is(""));
        assertThat(scanner.hasNext(), is(false));
    }

    @Test
    public void comma2() {
        Scanner scanner = new Scanner(",,one,two,,");
        scanner.useDelimiter(",");
        assertThat(scanner.next(), is(""));
        assertThat(scanner.next(), is("one"));
        assertThat(scanner.next(), is("two"));
        assertThat(scanner.next(), is(""));
        assertThat(scanner.hasNext(), is(false));
    }
}

[サッカー] ロンドンオリンピック 男子 日本vsモロッコ (ニューカッスル)

リーグ戦の2戦目は対モロッコ。モロッコはアフリカの左上、スペインの下に位置する国である。日本は怪我の酒井宏の代わりに酒井高が先発。酒井高はそのまま右サイド。酒井左徳永右の方がいい気がするけれど。あと、大津がトップで永井が左サイドに位置していることが多かった。

モロッコは力強くて足元も上手い。試合開始から暫くはモロッコペース。ドリブルで突破され危ないシーンが何度も。途中からは日本が盛り返し、前半終了近くはコーナーキックなどから何度か惜しいシーンを作ったが決められず。日本の選手は疲れているのか元気がない。

後半も立ち上がりはモロッコペース。それを凌いで徐々に日本が主導権を握るように。そして清武が素晴らしいミドルシュート。が、GKが弾いてバーに当たってGKキャッチ。大津が打った強いミドルシュートもGKが触って枠外へ。相手ゴールキーパー冴えている。あと山口が抜け出した絶好のチャンスもあったがシュートはバーのちょっと上へ。モロッコは選手交代してからうまくいかなくなってきた。ただし7番ラビアドのミドルシュートは脅威。日本はなかなか交代しなくて苛々したが、30分頃漸く大津を斎藤に交代。永井を杉本に交代しろよと思っていたら、清武の相手DF背後へのパスに永井が快速で走り込み、出てきたキーパーを越す山なりのロングシュートを打ちそれが入った。永井やりおった。

その後清武を杉本に交代。ロスタイムに日本DFの裏へ入られてGKと1対1になったが権田が弾きそのこぼれを打たれたシュートも吉田?が弾いてギリギリ勝利。これでトーナメント進出決定。