文章目录
正则表达式
概念: 使用单个字符串来描述/匹配一系列符合某个语法规则的字符串
使用步骤
1.通过大量的字符串找规律定义规则
2.使用这种规则去匹配新的字符串
3.匹配成功作出相应的操作(匹配 查找 替换 分割)
正则表达式由两种基本字符组成
原义字符:字符本身就是一个正则 \t \n \r \f
元字符: * + ? $ ^ () [] {}…
对正则表达式进行分类
1.字符类: [abc] 将字符进行归类,可以出现[]中的其中一个 对abc其中一个进行匹配
[^abc] 对不是abc的字符进行匹配
2.范围类:
[a-z] 表示代表a-z中的一个字符
表示所有的英文字母和数字 [a-zA-Z0-9]
3.预定义类:
\d == [0-9] 数字
\D == [^0-9] 非数字
空白字符:[ \t\n\x0B\f\r] == \s
[^ \t\n\x0B\f\r] == \S
[a-zA-Z0-9] \w
[^a-zA-Z0-9] \W
. 任何字符(与行结束符可能匹配也可能不匹配)
4.边界字符
^:以XXX开头
$:以XXX结尾
\b:单词边界
\B:非单词边界
5.量词
?:出现0次或者1次
+:出现1次或者多次
*:出现任意次
{n}:出现正好n次
{n,m}出现n-m次
{n,}出现至少n次
6.分组 ()
如何让Jack出现至少3次
(Jack){3,}
忽略分组:每一组能够分组,但是没有编号 ?:
或
Ja(ck|Love)Kitty
7.反向引用
利用分组的编号进行反向引用
反向引用使用$,必须先分组
正则表达式在Java中的应用
1.字符串查找操作 Pattern和Matcher
2.字符串匹配操作 字符串的matches()方法
3.字符串替换操作 字符串的replaceAll()和replaceFirst()方法
4.字符串分割 split() 方法
正则在Java当中的应用
public class RegexDemo {
public static void main(String[] args) {
String s = "Hello123World";
boolean matches = s.matches("Hello123World");
System.out.println(matches);
String[] strs = s.split("\\d{3}");
for (String str : strs) {
System.out.println(str);
}
}
}
测试正则表达式
public class RegexDemo {
public static void main(String[] args) {
String regex = "\t";
String s = "a b2 c3 def";
String replace1 = s.replaceFirst(regex, "X");
System.out.println(replace1);
String regex = "[abc]";
String s = "a b2 c3 def";
String replace1 = s.replaceAll(regex, "X");
System.out.println(replace1);
String regex = "[^abc]";
String s = "a b2 c3 def";
String replace1 = s.replaceAll(regex, "X");
System.out.println(replace1);
String regex = "\\d";
String s = "a b2 c3 def";
String replace1 = s.replaceAll(regex, "X");
System.out.println(replace1);
String regex = "\\.";
String s = "a b2 .c3 def";
String replace1 = s.replaceAll(regex, "X");
System.out.println(replace1);
String regex = "\\b";
String s = "Hello World Java";
String replace1 = s.replaceAll(regex, "X");
System.out.println(replace1);
// 2019-04-24 ==> 04/24/2019
String regex = "(\\d{4})-(\\d{2})-(\\d{2})";
String s = "2019-04-24";
String replace = s.replaceAll(regex, "$2/$3/$1");
System.out.println(replace);
}
}
Pattern和Matcher类的使用
1.指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。
2.Pattern: 正则表达式的模型
3.Matcher: 匹配一系列字符串的匹配器
public class RegexDemo {
public static void main(String[] args) {
// String regex = "x?y*z";
// String s = "xyyyz";
// boolean bool = s.matches(regex);
// System.out.println(bool);
// 定义规则
String regex = "x?y*z";
// 把正则表达式编译成模型
// static Pattern compile(String regex)
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher("xyyyz");
boolean result = m.matches();
System.out.println(result);
}
}
包装类
1.基本数据类型的包装类可以使用基本类型对应的类的相关成员变量和成员方法,相比于基本数据类型,包装类更易于使用。
2.八大基本数据类型
byte short int long float double char boolean
3.对应的包装类
Byte Short Integer Long Float Double Character Boolean
4.有了包装类,我们就可以访问和数据类型相关的对象的更多的方法
- 基本数据类型是没有方法可以调用的
- 任何的数据类型都有一个class属性,它返回的是类文件
5.Integer是java.lang.Number 包下面的
6.任何 Number类下的子类都可以转换成其他的数值类型,但是可能会出现精度丢失
1.static int BYTES
用于表示二进制补码二进制形式的 int值的字节数。
2.static int MAX_VALUE
一个持有最大值一个 int可以有2 31 -1。
3.static int MIN_VALUE
的常量保持的最小值的 int可以具有,-2 31。
4.static int SIZE
用于表示二进制补码二进制形式的 int值的位数。
5.static 类 TYPE
类原始类型 int的 类实例。
6.Integer(int value)
构造一个新分配的 Integer对象,该对象表示指定的 int值。
7.Integer(String s)
构造一个新分配 Integer对象,表示 int由指示值 String参数。
Integer类
构造方法
public Integer(int value)
public Integer(String s)
public class IntegerDemo {
public static void main(String[] args) {
System.out.println(Integer.BYTES);
System.out.println(Integer.MAX_VALUE);
System.out