使用正则表达式和不使用正则表达式的小例子。
package com.regex;
import org.junit.Test;
/**
* 在使用正则之前,我们先根据目前所学的知识来验证 QQ 号码的合法性。要求:
* 1) 要求必须是 5-12 位
* 2) 不能以 0 开头
* 3) 必须都是数字
*/
public class RegexTest {
// 使用正则表达式
@Test
public void test02() {
String qq = "123478923";
String reg = "[1-9]\\d{4,11}";
boolean flag = qq.matches(reg);
if (flag) System.out.println("QQ号合法!");
else System.out.println("QQ号不合法!");
}
// 使用之前的方式(不使用正则表达式)
@Test
public void test01() {
String qq = "123478923";
// 1) 要求必须是 5-12 位数字
if (qq.length() >= 5 && qq.length() <= 12) {
// 2) 不能以 0 开头
if (qq.startsWith("0")) {
System.out.println("QQ号不能以0开头");
} else {
// 3) 必须都是数字
boolean flag = true;
for(int i=0; i<qq.length(); i++) {
char c = qq.charAt(i);
if ('0' > c || c > '9') {
System.out.println("QQ号必须全为数字!");
flag = false;
break;
}
}
if (flag) System.out.println("QQ号合法!");
}
} else {
System.out.println("QQ号必须是 5-12 位!");
}
}
}
正则表达式功能之:获取
package com.regex;
import java.util.Arrays;
import java.util.Comparator;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.junit.Test;
/**
* 正则表达式功能之:获取
* 方法:
* 1、public static Pattern compile(String regex)
* 将给定的正则表达式编译到模式中。
* 2、public Matcher matcher(CharSequence input)
* 创建匹配给定输入与此模式的匹配器。
* 3、public boolean find()
* 尝试查找与该模式匹配的输入序列的下一个子序列。
* 4、public String group()
* 返回由以前匹配操作所匹配的输入子序列。
*/
public class PatternTest04 {
// 需求1:获取指定字符串中长度为 4 的所有单词。
@Test
public void test01() {
String str = "ming tian jiu yao fang jia le o";
// 1. 根据要求写正则表达式
String regex = "\\b[a-zA-Z]{4}\\b";
// 2. 把正则转换为Pattern对象
Pattern compile = Pattern.compile(regex);
// 3. 调用Pattern对象的matcher(String s)方法把需要匹配的字符串转换为Matcher对象
Matcher matcher = compile.matcher(str);
// 4. 调用Matcher对象的find()方法进行查找,如果找到返回true,否则返回false
/*boolean flag = matcher.find();
// 5. 调用Matcher对象的group()方法来获取
if (flag) {
String s = matcher.group();
System.out.println(s);
}*/
// 如果获取多个需要使用循环
while(matcher.find()) {
System.out.println(matcher.group());
}
}
// 需求2:获取指定字符串中正确的内容。
@Test
public void test02() {
String str = "正正正....则.则..表.表..表....表.达...达达..式式....";
str = str.replaceAll("\\.+", "");
System.out.println(str);
str = str.replaceAll("(.)\\1+", "$1");
System.out.println(str);
}
// 需求3:从指定字符串中获取 IP 地址并进行排序,然后输出。
@Test
public void test03() {
String str = "192.168.1.250 102.49.23.11 10.25.43.21 2.2.2.2 6.6.6.6";