Demo
- 需求:判断一个QQ号码格式是否正确
* 1:全数字
* 2:开头不能为0
* 3:长度在5-12
*
* 判断电话号码格式是否正确?
* 11位
*
* 判断条件过多,建议使用正则表达式来解决!
*
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入qq号码");
String qq = sc.nextLine();
//一个具有正确规则字符串表达式
String regex = "[1-9][0-9]{4,14}";
boolean flag = qq.matches(regex);
if(flag){
System.out.println("qq格式正确");
}else{
System.out.println("qq格式不正确");
}
}
}
x 字符 x。举例:‘a’表示字符a
\ 反斜线字符。
\n 新行(换行)符 (’\u000A’)
\r 回车符 (’\u000D’)
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[0-9] 0到9的字符都包括
[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
[a-zA-Z_0-9] a到 z 或 A到 Z 或0-9,两头的字母包括在内(范围)
. 任何字符。我的就是.字符本身,怎么表示呢? .
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
^ 行的开头
$ 行的结尾
\b 单词边界
就是不是单词字符的地方。
举例:hello world?haha;xixi
X? X,一次或一次也没有 0-1 次
X* X,零次或多次 0-n;
X+ X,一次或多次 1-n
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
public class Demo {
static void main(String[] args) {
String s = "1234567";
String regex = "[0-9]{3,6}";
System.out.println(s.matches(regex));
}
}
import java.util.Scanner;
public class Demo2 {
/*
* 判断电话号码是否合格
* 1:首位为1
* 2:长度11位
* 3:第二位 3,4,5,6,7,8,9
* 4:后面随便
*
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入电话号码");
String phone = sc.nextLine();
//写电话号码的规则
String regex = "1[3-9][0-9]{9}";
boolean flag = phone.matches(regex);
if(flag){
System.out.println("电话格式正确");
}else{
System.out.println("电话格式不正确");
}
}
}
- 利用正则判断邮箱
* 组成部分
* 邮箱名+@+域名
* [email protected]
* [email protected]
* [email protected]
* [email protected];
*
* 1:@前面可以是数字和字母的组合 长度6-15
* 2:@只能有一个
* 3:@后面是 数字和字母的组合 2-5
* 4:域名 后面 (多次).数字和字母的组合 2-5
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入email号码");
String email = sc.nextLine();
//写email号码的规则
//String regex = "[a-zA-Z_0-9]{6,15}@[a-zA-Z_0-9]{2,5}(\\.[a-zA-Z_0-9]{2,5})+";
String regex = "\\w{6,15}@\\w{2,5}(\\.\\w{2,5})+";
boolean flag = email.matches(regex);
if(flag){
System.out.println("email格式正确");
}else{
System.out.println("email格式不正确");
}
}
}
- split()
*
* 分割功能:
* aa,bb,cc
* aa.bb.cc
* aa bb cc
* D:\java1129\第二十三天-XML解析\视频
* 注意:路径分割 ,一个\代表2个\
public class Demo {
public static void main(String[] args) {
String str = "D:\\java1129\\第二十三天-XML解析\\视频";
String regex = "\\\\";
String[] split = str.split(regex);
for (String s : split) {
System.out.println(s);
}
}
}
- 我有如下一个字符串:”91 27 46 38 50”
* 请写代码实现最终输出结果是:”27 38 46 50 91”
* 步骤
* 1:按照" +"分割字符串 ,返回一个字符串数组
* 2:把每一个字符串转为整数
* 3:对整数进行从小到大排序
* 4:最后再把排好序的数子,拼接成字符串
import java.util.Arrays;
public class Demo2 {
public static void main(String[] args) {
String str = "91 27 46 38 50";
//1:按照" +"分割字符串 ,返回一个字符串数组
String regex = " +";
String[] split = str.split(regex);
//2创建一个整型数组,长度为split数组的长度
int[] arr = new int[split.length];
//3:把每一个字符串转为整数
for (int i = 0;i<split.length;i++) {
arr[i] = Integer.parseInt(split[i]);
}
//4:数组排序
Arrays.sort(arr);
//5:遍历整型数组
String s1 = "";
StringBuffer sb = new StringBuffer();
for (int i : arr) {
sb.append(i).append(" ");
}
System.out.println("原始字符串:"+str);
System.out.println("分割排序字符串:"+sb.toString());
}
}
- replaceAll(String regex, String replacement)
* 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
* 论坛中不能出现数字字符,用*替换
public class Demo {
public static void main(String[] args) {
String str = "你好吗这是我的银行账号 12456789";
String regex = "[0-9]";
str = str.replaceAll(regex, "*");
System.out.println(str);
}
}
- 获取由三个字符组成的单词
* String str = “da jia ting wo shuo, jin tian yao xia yu. bu shang wan zi xi, gao xing bu?”
* 使用场合:网站爬虫
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo {
public static void main(String[] args) {
String str = "da jia ting wo shuo, jin tian yao xia yu. bu shang wan zi xi, gao xing bu?";
String regex = "\\b[a-z]{3}\\b"; //非单词+3个字母+非单词
//1:获取Pattern实例,按着\\b[a-z]{3}\\b
Pattern pt = Pattern.compile(regex);
//2:获取匹配器
Matcher matcher = pt.matcher(str);
//3:根据匹配器,先判断是否有3个字符的构成的单词
while(matcher.find()){
//4:获取3个字母构成的单词
System.out.println(matcher.group());
}
//注意:获取之前必须判断 ,先调用find 再调用 group
}
}
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo2 {
public static void main(String[] args) throws IOException {
String regex = "1[3-9][0-9]{9}";
Pattern p = Pattern.compile(regex);
//读取文件
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
String str = null;
while((str = br.readLine())!=null){
Matcher matcher = p.matcher(str);
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
}