.
: 匹配单个字符且仅限一个字符,如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字符 | 和 |
. | 任意字符 | a ,b ,& ,0 |
d | 数字0~9 | 0 ~9 |
w | 大小写字母,数字和下划线 | a ~z A ~Z 0 ~9 ,_ |
s | 空格、Tab键 | 空格,Tab |
D | 非数字 | a ,A ,& ,_ ,…… |
W | 非w | & ,@ ,中 ,…… |
S | 非s | a ,A ,& ,_ ,…… |
多个字符的匹配规则如下:
正则表达式 | 规则 | 可以匹配 |
---|---|---|
A* | 任意个数字符 | 空,A ,AA ,AAA ,…… |
A+ | 至少1个字符 | A ,AA ,AAA ,…… |
A? | 0个或1个字符 | 空,A |
A{3} | 指定个数字符 | AAA |
A{2,3} | 指定范围个数字符 | AA ,AAA |
A{n,} | 至少n个字符 | AA ,AAA ,AAAA ,…… |
A{0,n} | 最多n个字符 | 空,A ,AA ,AAA |
用^
表示开头,$
表示结尾。如,^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
表示可以匹配AB
或CD
。
复杂匹配规则主要有:
正则表达式 | 规则 | 可以匹配 |
---|---|---|
^ | 开头 | 字符串开头 |
$ | 结尾 | 字符串结束 |
[ABC] | […]内任意字符 | A,B,C |
[A-F0-9xy] | 指定范围的字符 | A ,……,F ,0 ,……,9 ,x ,y |
[^A-F] | 指定范围外的任意字符 | 非A ~F |
AB|CD|EF | AB或CD或EF | AB ,CD ,EF |
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}}
}
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 条评论) |