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研修
あついね今日
あつい