001package intermediate; 002 003 004import com.sandwich.koan.Koan; 005 006import java.util.regex.Matcher; 007import java.util.regex.Pattern; 008 009import static com.sandwich.koan.constant.KoanConstants.__; 010import static com.sandwich.util.Assert.assertEquals; 011 012 013public class AboutRegularExpressions { 014 015 @Koan 016 public void basicMatching() { 017 Pattern p = Pattern.compile("xyz"); 018 Matcher m = p.matcher("xyzxxxxyz"); 019 // index 012345678 020 assertEquals(m.find(), __); 021 assertEquals(m.start(), __); 022 assertEquals(m.find(), __); 023 assertEquals(m.start(), __); 024 assertEquals(m.find(), __); 025 } 026 027 @Koan 028 public void extendedMatching() { 029 Pattern p = Pattern.compile("x.z"); 030 Matcher m = p.matcher("xyz u x z u xfz"); 031 // index 012345678901234 032 assertEquals(m.find(), __); 033 assertEquals(m.start(), __); 034 assertEquals(m.find(), __); 035 assertEquals(m.start(), __); 036 assertEquals(m.find(), __); 037 assertEquals(m.start(), __); 038 } 039 040 @Koan 041 public void escapingMetaCharacters() { 042 Pattern p = Pattern.compile("end\\."); 043 Matcher m = p.matcher("begin. end."); 044 // index 01234567890 045 assertEquals(m.find(), __); 046 assertEquals(m.start(), __); 047 } 048 049 @Koan 050 public void splittingStrings() { 051 String csvDataLine = "1,name,description"; 052 String[] data = csvDataLine.split(","); // you can use any regex here 053 assertEquals(data[0], __); 054 assertEquals(data[1], __); 055 assertEquals(data[2], __); 056 } 057}