[D:a精通正则表达式精通正则表达式第1讲(源码)src etitcastcourse egexasiclesson1FormalExpressShow.java] package net.itcast.course.regex.basic.lesson1; public class FormalExpressShow { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String regex1 = "\d+"; String str1 = "0123456"; if(str1.matches(regex1)) { System.out.println(""" + str1 + "" can be matched with regex "" + regex1 + """); } String regex2 = "sep[ea]r[ea]te"; String str2 = "seperate"; if(str2.matches(regex2)) { System.out.println(""" + str2 + "" can be matched with regex "" + regex2 + """); } } } [D:a精通正则表达式精通正则表达式第1讲(源码)src etitcastcourse egexasiclesson1ModeExample.java] package net.itcast.course.regex.basic.lesson1; public class ModeExample { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String emailRegex = Regexes.USERNAME_REGEX + "@" + Regexes.HOSTNAME_REGEX; String email = "webmaster@itcast.net"; if (email.matches(emailRegex)) { System.out.println(""" + email + "" can be matched"); } else { System.out.println(""" + email + "" can not be matched"); } } } [D:a精通正则表达式精通正则表达式第1讲(源码)src etitcastcourse egexasiclesson1RegexDupWordFinder.java] package net.itcast.course.regex.basic.lesson1; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDupWordFinder { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String[] sentences = new String[] { "This is a normal sentence", "I carelessly typed duplicate word word", "This sentence contain no duplicate word words", }; for (String sentence : sentences) { System.out.println("Sentence is: " + sentence); if (containDupWord(sentence)) { System.out.println("Duplicate word found!"); System.out.println("After processing:" + removeDupWords(sentence)); } System.out.println(""); } } public static boolean containDupWord(String s) { String regex = Regexes.DUP_WORD_REGEX; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(s); if (m.find()) { return true; } else { return false; } } public static String removeDupWords(String s) { String regex = Regexes.DUP_WORD_REGEX; return s.replaceAll(regex, "$1"); } } [D:a精通正则表达式精通正则表达式第1讲(源码)src etitcastcourse egexasiclesson1RegexEmailValidate.java] package net.itcast.course.regex.basic.lesson1; public class RegexEmailValidate { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String[] emails = new String[] { "webmaster@itcast.net", "web.master@itcast.net", "webmaster@it-cast.net", ".webmaster@itcast.net", "webmaster@itcast", "webmaster.itcast." }; for (String email : emails) { System.out.println("Validating: " + email); if (isValideEmail(email)) { System.out.println("[" + email + "] is valid email"); } System.out.println(""); } } private static boolean isValideEmail(String s) { return s.matches(Regexes.EMAIL_REGEX); } } [D:a精通正则表达式精通正则表达式第1讲(源码)src etitcastcourse egexasiclesson1Regexes.java] package net.itcast.course.regex.basic.lesson1; public class Regexes { public static final String OCT_NUM_REGEX = "\d+"; public static final String HEX_NUM_REGEX = "(?i)[0-9a-f]+"; public static final String DUP_WORD_REGEX = "(?<=\b)(\w+)\s+\1(?=\b)"; public static final String EMAIL_REGEX = "(?i)(?<=\b)[a-z0-9][-a-z0-9_.]+[a-z0-9]@([a-z0-9][-a-z0-9]+\.)+[a-z]{2,4}(?=\b)"; public static final String HREF_LINK_REGEX = "(?i)<a\s+href\s*=\s*['"]?([^'"\s>]+)['"\s>]"; public static final String NUMBER_BEAUTIFY_REGEX = "(?<=\d)(?=((\d{3})+\b))"; public static final String USERNAME_REGEX = "(?<=\b)[a-z0-9][-a-z0-9_.]+[a-z0-9]"; public static final String HOSTNAME_REGEX = "([a-z0-9][-a-z0-9]+\.)+[a-z]{2,4}(?=\b)"; } [D:a精通正则表达式精通正则表达式第1讲(源码)src etitcastcourse egexasiclesson1RegexExtractor.java] package net.itcast.course.regex.basic.lesson1; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexExtractor { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String htmlCode = "<html> " + "<a href="www.itcast.net">ITCast</a> " + "<a href='http://www.itcast.net/portal/teachers'>ITCast</a> " + "<a href=http://www.itcast.net/portal>ITCast</a> " + "<a href = http://www.itcast.net/portal/courses/>ITCast</a> " + "<a href ="http://www.itcast.net/help">ITCast</a> " + "student@itcast.net " + "webmaster@itcast.net " + "teachers@itcast.net " + "</html>"; System.out.println("Checking email"); for(String email:extractEmail(htmlCode)) { System.out.println("Email: " + email); } System.out.println(""); System.out.println("Checking link"); for(String link:extractLink(htmlCode)) { System.out.println("Link: " + link); } System.out.println(""); } public static List<String> extractEmail(String s) { List<String> result = new ArrayList<String>(); Pattern p = Pattern.compile(Regexes.EMAIL_REGEX); Matcher m = p.matcher(s); while (m.find()) { result.add(m.group()); } return result; } public static List<String> extractLink(String s) { List<String> result = new ArrayList<String>(); Pattern p = Pattern.compile(Regexes.HREF_LINK_REGEX); Matcher m = p.matcher(s); while (m.find()) { result.add(m.group(1)); } return result; } } [D:a精通正则表达式精通正则表达式第1讲(源码)src etitcastcourse egexasiclesson1RegexNumBeautifier.java] package net.itcast.course.regex.basic.lesson1; public class RegexNumBeautifier { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String[] numbers = new String[] { "1234567890", "123456", "123" }; for (String number : numbers) { System.out.println(number + " " + beautifyNumber(number) + " "); } } public static String beautifyNumber(String s) { return s.replaceAll(Regexes.NUMBER_BEAUTIFY_REGEX, ","); } } [D:a精通正则表达式精通正则表达式第1讲(源码)src etitcastcourse egexasiclesson1RegexNumberValidate.java] package net.itcast.course.regex.basic.lesson1; public class RegexNumberValidate { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String[] values = new String[] {"10", "32768", "99999", "ati", "90AF", "ffff"}; for (String value : values) { System.out.println("Validating value: " + value); if(isOctNumber(value)) { System.out.println("[" + value + "] is valid Oct number"); } if(isHexNumber(value)) { System.out.println("[" + value + "] is valid Hex number"); } System.out.println(""); } } public static boolean isOctNumber(String s) { String validateRegex = Regexes.OCT_NUM_REGEX; return s.matches(validateRegex); } public static boolean isHexNumber(String s) { String validateRegex = Regexes.HEX_NUM_REGEX; return s.matches(validateRegex); } } [D:a精通正则表达式精通正则表达式第1讲(源码)src etitcastcourse egexasiclesson1TraditionalNumberValidate.java] package net.itcast.course.regex.basic.lesson1; public class TraditionalNumberValidate { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String[] values = new String[] { "10", "32768", "99999", "ati", "90AF", "ffff" }; for (String value : values) { System.out.println("Validating value: " + value); if (isOctNumber(value)) { System.out.println("[" + value + "] is valid Oct number"); } if (isHexNumber(value)) { System.out.println("[" + value + "] is valid Hex number"); } System.out.println(""); } } public static boolean isOctNumber(String s) { boolean result = true; for (int i = 0, n = s.length(); i < n; i++) { char c = s.charAt(i); if (c == '0' || c == '1' || c == '2' || c == '3' || c == '4' || c == '5' || c == '6' || c == '7' || c == '8' || c == '9') { continue; } else { result = false; break; } } return result; } public static boolean isHexNumber(String s) { boolean result = true; for (int i = 0, n = s.length(); i < n; i++) { char c = s.charAt(i); if (c == '0' || c == '1' || c == '2' || c == '3' || c == '4' || c == '5' || c == '6' || c == '7' || c == '8' || c == '9' || c == 'a' || c == 'b' || c == 'c' || c == 'd' || c == 'e' || c == 'f' || c == 'A' || c == 'B' || c == 'C' || c == 'D' || c == 'E' || c == 'F') { continue; } else { result = false; break; } } return result; } }