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}