Apexコードの正規表現APIはほぼJavaと同じ

こんな感じだ

@isTest
private class RegExTest {

    static testMethod void testMatcherMatches() {
		String regex1 = 'neko inu saru kiji';
		String searchStr = 'neko inu saru kiji';
		Pattern pt = Pattern.compile(regex1);
		Matcher matcher = pt.matcher(searchStr);

		boolean bool = matcher.matches();
		system.assertEquals(bool, true);

		regex1 = 'neko';
		searchStr = 'neko inu saru kiji';
		pt = Pattern.compile(regex1);
		matcher = pt.matcher(searchStr);

		boolean bool2 = matcher.matches();
		system.assertEquals(bool, true);
		
	}

	static testMethod void testMatcherFind() {
		String regex1 = 'inu';
		String searchStr = 'neko inu saru kiji';
		Pattern pt = Pattern.compile(regex1);
		Matcher matcher = pt.matcher(searchStr);

		boolean bool = matcher.find();
		system.assertEquals(bool, true);

		bool = matcher.find();
		system.assertEquals(bool, false);

		matcher.reset();
		bool = matcher.find();
		system.assertEquals(bool, true);
	}
	
	static testMethod void testMatcherLookAt() {
		String regex1 = 'inu';
		String searchStr = 'neko inu saru kiji';
		Pattern pt = Pattern.compile(regex1);
		Matcher matcher = pt.matcher(searchStr);

		boolean bool = matcher.lookingAt();
		system.assertEquals(bool, false);

		regex1 = 'neko';
		searchStr = 'neko inu saru kiji';
		pt = Pattern.compile(regex1);
		matcher = pt.matcher(searchStr);

		bool = matcher.lookingAt();
		system.assertEquals(bool, true);

	}
	
	static testMethod void testBackRefer() {
		String regex1 = '((neko).+)(\\2zura)';
		String searchStr = 'neko inu saru kiji neko inu nekozura';
		Pattern pt = Pattern.compile(regex1);
		Matcher matcher = pt.matcher(searchStr);
		matcher.find();
		String all = matcher.group(0);
		String f = matcher.group(1);
		String b = matcher.group(3);
		system.assertEquals(all, 'neko inu saru kiji neko inu nekozura');
		system.assertEquals(f, 'neko inu saru kiji neko inu ');
		system.assertEquals(b, 'nekozura');
	}
	
}

先日のJavaとの比較

これとメソッド名同じものは内容同じテストコードですが結果は大体同じだった。この中で1つだけ違ったのは、testMatcherMatches()の2つ目assertの結果が違うことのみかな。あとStringクラスにmatches()メソッドは無い。もう少しEclipseIDEが賢くなってくれるとありがたいんですけどねー。ショートカットとかも大体使えないしねー。

Force.com研修

http://study.kpscorp.jp/

あついね今日

あつい