Day04 学习笔记

阅读: 评论:0

Day04 学习笔记

Day04 学习笔记

Day04 学习笔记

正则表达式

匹配任意字符

.: 匹配单个字符且仅限一个字符,如a.b

  • "abc",因为.可以匹配字符b
  • "a&c",因为.可以匹配字符&
  • "acc",因为.可以匹配字符c

匹配数字

d:匹配单个数字字符,如00d

  • "007",因为d可以匹配字符7
  • "008",因为d可以匹配字符8

匹配常用字符

w:匹配一个字母、数字或下划线,如javaw

  • "javac",因为w可以匹配英文字符c
  • "java9",因为w可以匹配数字字符9;。
  • "java_",因为w可以匹配下划线_

匹配空格字符

s:匹配一个空格字符,如asc

  • "a c",因为s可以匹配空格字符``;
  • "a c",因为s可以匹配tab字符t

重复匹配

修饰符*可以匹配任意个字符,包括0个字符。用Ad*可以匹配:

  • A:因为d*可以匹配0个数字;
  • A0:因为d*可以匹配1个数字0
  • A380:因为d*可以匹配多个数字380

修饰符+可以匹配至少一个字符。用Ad+可以匹配:

  • A0:因为d+可以匹配1个数字0
  • A380:因为d+可以匹配多个数字380

修饰符?可以匹配0个或一个字符。用Ad?可以匹配:

  • A:因为d?可以匹配0个数字;
  • A0:因为d?可以匹配1个数字0

用修饰符{n}就可以精确指定n个字符。Ad{3}可以精确匹配:

  • A380:因为d{3}可以匹配3个数字380

用修饰符{n,m}就可以指定匹配n~m个字符。Ad{3,5}可以精确匹配:

  • A380:因为d{3,5}可以匹配3个数字380
  • A3800:因为d{3,5}可以匹配4个数字3800
  • A38000:因为d{3,5}可以匹配5个数字38000

如果没有上限,那么修饰符{n,}就可以匹配至少n个字符。

小结

单个字符的匹配规则如下:

正则表达式规则可以匹配
A指定字符A
u548c指定Unicode字符
.任意字符ab&0
d数字0~90~9
w大小写字母,数字和下划线a~z A~Z 0~9,_
s空格、Tab键空格,Tab
D非数字aA&_,……
W非w&@,……
S非saA&_,……

多个字符的匹配规则如下:

正则表达式规则可以匹配
A*任意个数字符空,AAAAAA,……
A+至少1个字符AAAAAA,……
A?0个或1个字符空,A
A{3}指定个数字符AAA
A{2,3}指定范围个数字符AAAAA
A{n,}至少n个字符AAAAAAAAA,……
A{0,n}最多n个字符空,AAAAAA

匹配开头和结尾

^表示开头,$表示结尾。如,^Ad{3}$,可匹配"A001""A380"

匹配指定范围

使用[...]可以匹配范围内的字符,例如,[123456789]可以匹配1~9[1-9]也可以匹配1-9

匹配大小写不限的十六进制数,如1A2b3c,可以这样写:[0-9a-fA-F],可以匹配以下任意范围的字符:

  • 0-9:字符0~9
  • a-f:字符a~f
  • A-F:字符A~F

假设要匹配任意字符,但不包括数字,可以写[^1-9]{3}

  • 可以匹配"ABC",因为不包含字符1~9
  • 可以匹配"A00",因为不包含字符1~9
  • 不能匹配"A01",因为包含字符1
  • 不能匹配"A05",因为包含字符5

或规则匹配

|连接的两个正则规则是规则,例如,AB|CD表示可以匹配ABCD

小结

复杂匹配规则主要有:

正则表达式规则可以匹配
^开头字符串开头
$结尾字符串结束
[ABC][…]内任意字符A,B,C
[A-F0-9xy]指定范围的字符A,……,F0,……,9xy
[^A-F]指定范围外的任意字符A~F
AB|CD|EFAB或CD或EFABCDEF

分组匹配

import *;public class Main {public static void main(String[] args) {Pattern p = Patternpile("(\d{3,4})\-(\d{7,8})");Matcher m = p.matcher("010-12345678");if (m.matches()) {String g1 = m.group(1);String g2 = m.group(2);System.out.println(g1);System.out.println(g2);} else {System.out.println("匹配失败!");}}
}

正则表达式用(...)分组可以通过Matcher对象快速提取子串:

  • group(0)表示匹配的整个字符串;
  • group(1)表示第1个子串,group(2)表示第2个子串,以此类推。

替换字符串

使用正则表达式替换字符串可以直接调用,它的第一个参数是正则表达式,第二个参数是待替换的字符串。

public class Main {public static void main(String[] args) {String s = "The     quicktt brown   fox  jumps   over the  lazy dog.";String r = s.replaceAll("\s+", " ");System.out.println(r); // "The quick brown fox jumps over the lazy dog."}
}

搜索字符串

import *;public class Main {public static void main(String[] args) {String s = "the quick brown fox jumps over the lazy dog.";Pattern p = Patternpile("\wo\w");Matcher m = p.matcher(s);while (m.find()) {String sub = s.substring(m.start(), m.end());System.out.println(sub);//row fox dog}}
}

Map

public class MapDemo02 {public static void main(String[] args) {// 创建Map集合对象Map<String, String> map = new HashMap<String,String>();// 添加元素到集合map.put("liu", "1");map.put("chuan", "2");map.put("zheng", "3");// 获 取 所 有 的 entry 对 象 entrySet Set<Entry<String,String>> entrySet = Set();// 遍历得到每一个entry对象for (Map.Entry<String, String> entry : entrySet) {// 解 析String key = Key(); String value = Value();System.out.println(key+":"+value);}}
}

本文发布于:2024-02-03 23:41:36,感谢您对本站的认可!

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

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

标签:学习笔记
留言与评论(共有 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