java 正则匹配性别

阅读: 评论:0

java 正则匹配性别

java 正则匹配性别

1、如何校验一个QQ号码案例

1 packagecn.itcast_01;2

3 importjava.util.Scanner;4

5 /*

6 * 校验qq号码.7 * 1:要求必须是5-15位数字8 * 2:0不能开头9 *10 * 分析:11 * A:键盘录入一个QQ号码12 * B:写一个功能实现校验13 * C:调用功能,输出结果。14 */

15 public classRegexDemo {16 public static voidmain(String[] args) {17 //创建键盘录入对象

18 Scanner sc = newScanner(System.in);19 System.out.println("请输入你的QQ号码:");20 String qq &#Line();21

22 System.out.println("checkQQ:"+checkQQ(qq));23 }24

25 /*

26 * 写一个功能实现校验 两个明确: 明确返回值类型:boolean 明确参数列表:String qq27 */

28 public static booleancheckQQ(String qq) {29 boolean flag = true;30

31 //校验长度

32 if (qq.length() >= 5 && qq.length() <= 15) {33 //0不能开头

34 if (!qq.startsWith("0")) {35 //必须是数字

36 char[] chs &#CharArray();37 for (int x = 0; x < chs.length; x++) {38 char ch =chs[x];39 if (!Character.isDigit(ch)) {40 flag = false;41 break;42 }43 }44 } else{45 flag = false;46 }47 } else{48 flag = false;49 }50

51 returnflag;52 }53 }

使用正则表达式改进:

1 packagecn.itcast_01;2

3 importjava.util.Scanner;4

5 /*

6 * 正则表达式:符合一定规则的字符串。7 */

8 public classRegexDemo2 {9 public static voidmain(String[] args) {10 //创建键盘录入对象

11 Scanner sc = newScanner(System.in);12 System.out.println("请输入你的QQ号码:");13 String qq &#Line();14

15 System.out.println("checkQQ:" +checkQQ(qq));16 }17

18 public static booleancheckQQ(String qq) {19 //String regex ="[1-9][0-9]{4,14}";20 // //public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式21 //boolean flag = qq.matches(regex);22 //return flag;23

24 //return qq.matches("[1-9][0-9]{4,14}");

25

26 return qq.matches("[1-9]\d{4,14}");27 }28 }

正则表达式的规则:

A:字符

x 字符 x。举例:'a'表示字符a

\ 反斜线字符。

n 新行(换行)符 ('u000A')

r 回车符 ('u000D')

B:字符类

[abc] a、b 或 c(简单类)

[^abc] 任何字符,除了 a、b 或 c(否定)

[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)

[0-9] 0到9的字符都包括

C:预定义字符类

. 任何字符。我的就是.字符本身,怎么表示呢? .

d 数字:[0-9]

w 单词字符:[a-zA-Z_0-9]

在正则表达式里面组成单词的东西必须有这些东西组成

D:边界匹配器

^ 行的开头

$ 行的结尾

b 单词边界

就是不是单词字符的地方。

举例:hello world?haha;xixi

E:Greedy 数量词

X? X,一次或一次也没有

X* X,零次或多次

X+ X,一次或多次

X{n} X,恰好 n 次

X{n,} X,至少 n 次

X{n,m} X,至少 n 次,但是不超过 m 次

2、正则表达式的判断功能

1 packagecn.itcast_02;2

3 importjava.util.Scanner;4

5 /*

6 * 判断功能7 * String类的public boolean matches(String regex)8 *9 * 需求:10 * 判断手机号码是否满足要求?11 *12 * 分析:13 * A:键盘录入手机号码14 * B:定义手机号码的规则15 * 1343697598016 * 1368888686817 * 1386666888818 * 1345678901219 * 1312345678920 * 1891234567821 * 1888686787822 * 1863883388323 * C:调用功能,判断即可24 * D:输出结果25 */

26 public classRegexDemo {27 public static voidmain(String[] args) {28 //键盘录入手机号码

29 Scanner sc = newScanner(System.in);30 System.out.println("请输入你的手机号码:");31 String phone &#Line();32

33 //定义手机号码的规则

34 String regex = "1[38]\d{9}";35

36 //调用功能,判断即可

37 boolean flag =phone.matches(regex);38

39 //输出结果

40 System.out.println("flag:"+flag);41 }42 }

邮箱验证案例:

1 packagecn.itcast_02;2

3 importjava.util.Scanner;4

5 /*

6 * 校验邮箱7 *8 * 分析:9 * A:键盘录入邮箱10 * B:定义邮箱的规则11 * 1517806580@qq12 * liuyi@16313 * linqingxia@12614 * fengqingyang@sina15 * fqy@itcast16 * C:调用功能,判断即可17 * D:输出结果18 */

19 public classRegexTest {20 public static voidmain(String[] args) {21 //键盘录入邮箱

22 Scanner sc = newScanner(System.in);23 System.out.println("请输入邮箱:");24 String email &#Line();25

26 //定义邮箱的规则27 //String regex = "[a-zA-Z_0-9]+@[a-zA-Z_0-9]{2,6}(\.[a-zA-Z_0-9]{2,3})+";

28 String regex = "\w+@\w{2,6}(\.\w{2,3})+";29

30 //调用功能,判断即可

31 boolean flag =email.matches(regex);32

33 //输出结果

34 System.out.println("flag:"+flag);35 }36 }

3、正则表达式的分割功能

1 packagecn.itcast_03;2

3 importjava.util.Scanner;4

5 /*

6 * 分割功能7 * String类的public String[] split(String regex)8 * 根据给定正则表达式的匹配拆分此字符串。9 *10 * 举例:11 * 百合网,世纪佳缘,珍爱网,QQ12 * 搜索好友13 * 性别:女14 * 范围:"18-24"15 *16 * age>=18 && age<=2417 */

18 public classRegexDemo {19 public static voidmain(String[] args) {20 //定义一个年龄搜索范围

21 String ages = "18-24";22

23 //定义规则

24 String regex = "-";25

26 //调用方法

27 String[] strArray =ages.split(regex);28

29 // //遍历30 //for(int x=0; x

34 //如何得到int类型的呢?

35 int startAge = Integer.parseInt(strArray[0]);36 int endAge = Integer.parseInt(strArray[1]);37

38 //键盘录入年龄

39 Scanner sc = newScanner(System.in);40 System.out.println("请输入你的年龄:");41 int age &#Int();42

43 if(age>=startAge && age<=endAge) {44 System.out.println("你就是我想找的");45 }else{46 System.out.println("不符合我的要求,gun");47 }48 }49 }

练习:

1 packagecn.itcast_03;2

3 /*

4 * 分割功能练习5 */

6 public classRegexDemo2 {7 public static voidmain(String[] args) {8 //定义一个字符串

9 String s1 = "aa,bb,cc";10 //直接分割

11 String[] str1Array = s1.split(",");12 for (int x = 0; x < str1Array.length; x++) {13 System.out.println(str1Array[x]);14 }15 System.out.println("---------------------");16

17 String s2 = "aa.bb";18 String[] str2Array = s2.split("\.");19 for (int x = 0; x < str2Array.length; x++) {20 System.out.println(str2Array[x]);21 }22 System.out.println("---------------------");23

24 String s3 = "aa bb cc";25 String[] str3Array = s3.split(" +");26 for (int x = 0; x < str3Array.length; x++) {27 System.out.println(str3Array[x]);28 }29 System.out.println("---------------------");30

31 //硬盘上的路径,我们应该用\替代

32 String s4 = "E:\JavaSE\day14\avi";33 String[] str4Array = s4.split("\\");34 for (int x = 0; x < str4Array.length; x++) {35 System.out.println(str4Array[x]);36 }37 System.out.println("---------------------");38 }39 }

把字符串中的数字排序案例

1 packagecn.itcast_03;2

3 importjava.util.Arrays;4

5 /*

6 * 我有如下一个字符串:"91 27 46 38 50"7 * 请写代码实现最终输出结果是:"27 38 46 50 91"8 *9 * 分析:10 * A:定义一个字符串11 * B:把字符串进行分割,得到一个字符串数组12 * C:把字符串数组变换成int数组13 * D:对int数组排序14 * E:把排序后的int数组在组装成一个字符串15 * F:输出字符串16 */

17 public classRegexTest {18 public static voidmain(String[] args) {19 //定义一个字符串

20 String s = "91 27 46 38 50";21

22 //把字符串进行分割,得到一个字符串数组

23 String[] strArray = s.split(" ");24

25 //把字符串数组变换成int数组

26 int[] arr = new int[strArray.length];27

28 for (int x = 0; x < arr.length; x++) {29 arr[x] =Integer.parseInt(strArray[x]);30 }31

32 //对int数组排序

33 Arrays.sort(arr);34

35 //把排序后的int数组在组装成一个字符串

36 StringBuilder sb = newStringBuilder();37 for (int x = 0; x < arr.length; x++) {38 sb.append(arr[x]).append(" ");39 }40 //转化为字符串

41 String result &#String().trim();42

43 //输出字符串

44 System.out.println("result:"+result);45 }46 }

4、正则表达式的替换功能

1 packagecn.itcast_04;2

3 /*

4 * 替换功能5 * String类的public String replaceAll(String regex,String replacement)6 * 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。7 */

8 public classRegexDemo {9 public static voidmain(String[] args) {10 //定义一个字符串

11 String s = "helloqq12345worldkh622112345678java";12

13 //我要去除所有的数字,用*给替换掉14 //String regex = "\d+";15 //String regex = "\d";16 //String ss = "*";17

18

19 //直接把数字干掉

20 String regex = "\d+";21 String ss = "";22

23 String result &#placeAll(regex, ss);24 System.out.println(result);25 }26 }

5、Pattern和Matcher的概述

1 packagecn.itcast_05;2

3 Matcher;4 Pattern;5

6 /*

7 * 获取功能8 * Pattern和Matcher类的使用9 *10 * 模式和匹配器的基本使用顺序11 */

12 public classRegexDemo {13 public static voidmain(String[] args) {14 //模式和匹配器的典型调用顺序15 //把正则表达式编译成模式对象

16 Pattern p = Patternpile("a*b");17 //通过模式对象得到匹配器对象,这个时候需要的是被匹配的字符串

18 Matcher m = p.matcher("aaaaab");19 //调用匹配器对象的功能

20 boolean b =m.matches();21 System.out.println(b);22

23 //这个是判断功能,但是如果做判断,这样做就有点麻烦了,我们直接用字符串的方法做

24 String s = "aaaaab";25 String regex = "a*b";26 boolean bb =s.matches(regex);27 System.out.println(bb);28 }29 }

6、正则表达式的获取功能

1 packagecn.itcast_05;2

3 Matcher;4 Pattern;5

6 /*

7 * 获取功能:8 * 获取下面这个字符串中由三个字符组成的单词9 * da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?10 */

11 public classRegexDemo2 {12 public static voidmain(String[] args) {13 //定义字符串

14 String s = "da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";15 //规则

16 String regex = "\b\w{3}\b";17

18 //把规则编译成模式对象

19 Pattern p =Patternpile(regex);20 //通过模式对象得到匹配器对象

21 Matcher m =p.matcher(s);22 //调用匹配器对象的功能23 //通过find方法就是查找有没有满足条件的子串24 //public boolean find()25 //boolean flag = m.find();26 //System.out.println(flag);27 // //如何得到值呢?28 // //public String group()29 //String ss = m.group();30 //System.out.println(ss);31 //

32 // //再来一次33 //flag = m.find();34 //System.out.println(flag);35 //ss = m.group();36 //System.out.println(ss);

37

38 while(m.find()) {39 System.out.up());40 }41

42 //注意:一定要先find(),然后才能group()43 //IllegalStateException: No match found44 //String ss = m.group();45 //System.out.println(ss);

46 }47 }

7、System类中垃圾回收的方法gc()的讲解

<()可用于垃圾回收。当使用()回收某个对象所占用的内存之前,通过要求程序调用适当的方法来清理资源。在没有明确指定资源清理的情况下,Java提高了默认机制来清理该对象的资源,就是调用Object类的finalize()方法。finalize()方法的作用是释放一个对象占用的内存空间时,会被JVM调用。而子类重写该方法,就可以清理对象占用的资源,该方法有没有链式调用,所以必须手动实现。

从程序的运行结果可以发现,执行()前,系统会自动调用finalize()方法清除对象占有的资源,通过super.finalize()方式可以实现从下到上的finalize()方法的调用,即先释放自己的资源,再去释放父类的资源。

但是,不要在程序中频繁的调用垃圾回收,因为每一次执行垃圾回收,jvm都会强制启动垃圾回收器运行,这会耗费更多的系统资源,会与正常的Java程序运行争抢资源,只有在执行大量的对象的释放,才调用垃圾回收最好

1 packagecn.itcast_01;2

3 public classPerson {4 privateString name;5 private intage;6

7 publicPerson() {8 super();9 }10

11 public Person(String name, intage) {12 super();13 this.name =name;14 this.age =age;15 }16

17 publicString getName() {18 returnname;19 }20

21 public voidsetName(String name) {22 this.name =name;23 }24

25 public intgetAge() {26 returnage;27 }28

29 public void setAge(intage) {30 this.age =age;31 }32

33 @Override34 publicString toString() {35 return "Person [name=" + name + ", age=" + age + "]";36 }37

38 @Override39 protected void finalize() throwsThrowable {40 System.out.println("当前的对象被回收了" + this);41 super.finalize();42 }43

44 }

1 packagecn.itcast_01;2

3 /*

4 * System类包含一些有用的类字段和方法。它不能被实例化。5 *6 * 方法:7 * public static void gc():运行垃圾回收器。8 * public static void exit(int status)9 * public static long currentTimeMillis()10 * public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)11 */

12 public classSystemDemo {13 public static voidmain(String[] args) {14 Person p = new Person("赵雅芝", 60);15 System.out.println(p);16

17 p = null; //让p不再指定堆内存

();19 }20 }

本文发布于:2024-02-01 06:23:08,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170673978834522.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:正则   性别   java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23