廖雪峰Java9正则表达式-2正则表达式进阶-6搜索和替换
1.使用正则表达式分割字符串:
String[] string.split(String regex);
"a b c".split("\\s");->[a, b, c]
"a b c".split("\\s");->[a, b, , , , c]
"a b c".split("\\s+");->[a, b, c]
"a,b:;c".split("[\\,\\:\\;\\s]+");->[a, b, c]
public static void main(String[] args){
String tags = "java php python";
String[] arr = tags.split("\\s");
System.out.println(Arrays.toString(arr));
}

```#java
public class SplitString {
public static void main(String[] args){
String tags = "java php python";
String[] arr = tags.split("\\s+");
System.out.println(Arrays.toString(arr));
}
}
```

```#java
public class SplitString {
public static void main(String[] args){
String tags = "java, php;: python";
String[] arr = tags.split("[\\,\\;\\:\\s]+");
System.out.println(Arrays.toString(arr));
}
}
```

2.使用正则表达式查找字符串
package com.testList;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SearchString {
public static void main(String[] args){
String s = "The quick brown fox jumps over the lazy dog.";
//区分大小写
Pattern p1 = Pattern.compile("the");
Matcher m1 = p1.matcher(s);
while(m1.find()){
String sub = s.substring(m1.start(),m1.end());
System.out.print(sub+",start="+m1.start()+" end="+m1.end()+"\t");
}
System.out.println();
//不区分大小写
Pattern p2 = Pattern.compile("the",Pattern.CASE_INSENSITIVE);
Matcher m2 = p2.matcher(s);
while(m2.find()){
String sub = s.substring(m2.start(),m2.end());
System.out.print(sub+",start="+m2.start()+" end="+m2.end()+"\t");
}
System.out.println();
//匹配每个单词
Pattern p3 = Pattern.compile("\\w+",Pattern.CASE_INSENSITIVE);
Matcher m3 = p3.matcher(s);
while(m3.find()){
String sub = s.substring(m3.start(),m3.end());
System.out.print(sub+",start="+m3.start()+" end="+m3.end()+"\t");
}
System.out.println();
//匹配带有o的单词
Pattern p4 = Pattern.compile("\\w*o\\w*",Pattern.CASE_INSENSITIVE);
Matcher m4 = p4.matcher(s);
while(m4.find()){
String sub = s.substring(m4.start(),m4.end());
System.out.print(sub+",start="+m4.start()+" end="+m4.end()+"\t");
}
}
}

3.使用正则表达式替换字符串
public class SplitString {
public static void main(String[] args){
String s = "The quick brown fox jumps over the lazy dog.";
//区分大小写
String r = s.replaceAll("\\s+"," ");//参数依次为正则表达式,用于替换的字符
System.out.println(r);
String r2 = s.replaceAll("(\\w+)","<b>$1</b>");//$1方向引用,指向前面捕获的单词
System.out.println(r2);
}
}

4.总结
使用正则表达式可以:
- 分割字符串:String .split()
- 搜索字串:Matcher.find()
- 替换字符串:String.replaceAll()
廖雪峰Java9正则表达式-2正则表达式进阶-6搜索和替换的更多相关文章
- 廖雪峰Java9正则表达式-2正则表达式进阶-3分组匹配
1.使用括号可以提取字符串 不加括号匹配电话号码 匹配成功后,如何提取想要的字符串? 使用(...)可以分组:"^(\d{3,4})\-(\d{6,8})$" 2.String.m ...
- 廖雪峰Java9正则表达式-2正则表达式进阶-5非贪婪匹配
1.贪婪匹配 问题:给定一个字符串表示的数字,判断该数字末尾0的个数? "123000": 3个0 "10100": 2个0 "1001": ...
- 廖雪峰Java9正则表达式-1正则表达式入门-2正则表达式匹配规则
正则表达式的匹配规则: 从左到右按规则匹配 匹配规则及示例 可以匹配 不能匹配 "abc" "abc" 不能匹配:"ab", "A ...
- 廖雪峰Java9正则表达式-1正则表达式入门-1正则表达式简介
1.使用代码来判断字符串 场景: 判断字符串是否是有效的电话号码:"010-12345678", "123ABC456" 判断字符串是否是有效的电子邮箱地址:& ...
- 廖雪峰Python电子书总结
函数 1.注意:函数的默认参数必须指向不可变对象 未修改前: def add_end(L=[]): L.append('END') return L 存在的问题:如果连续调用多次,会出现多个 'END ...
- 廖雪峰python教程的第一个疑问
函数的参数一节中提到: def add_end(L = []); L.append('END') return L 正常调用add_end时(也就是有参数传入时): >>> add_ ...
- 爬虫:把廖雪峰的教程转换成 PDF 电子书
写爬虫似乎没有比用 Python 更合适了,Python 社区提供的爬虫工具多得让你眼花缭乱,各种拿来就可以直接用的 library 分分钟就可以写出一个爬虫出来,今天就琢磨着写一个爬虫,将廖雪峰的 ...
- Python自学笔记-生成器(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 生成器 通过列 ...
- Python自学笔记-lambda函数(来自廖雪峰的官网Python3)
感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 匿名函数 通过 ...
随机推荐
- Js 数组的各种方法及操作
一.数组去重 var arr = [0,1,20,3,0,45,6,0]; Array.prototype.unrepeat = function(){ var array = []; for(var ...
- iOS开发之SceneKit框架--SCNGeometry.h
1.SCNGeometry简介 SCNGeometry负责呈现三维模型的类,它管理者物体的形状.纹理等.它可以由SCNGeometrySource和SCNGeometryElement来构造, 一个S ...
- transient在java中的作用
java 的transient关键字的作用是需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中. trans ...
- deployment资源
目的:用rc在滚动升级之后,会造成服务访问中孤单,于是k8s引入了deploymentziyuan 创建deployment vim k8s_deploy.yml apiVersion: extens ...
- Java学习之Java历史版本
Java有三个版本,标准版Java SE,企业版Java EE,移动版Java ME.按理来说,每一种版本都会有自己的版本号,但是约定俗成:JDK版本号=Java SE版本号=Java版本号,这是因为 ...
- 第二周课堂笔记1th
1. 三元运算 + 2. for循环 for为有限循环,while为无限循环 可迭代对象:是字符串,数字不可以 数字不可以迭代但是可以用range函数 for i in range(1 ...
- BOM相关知识点
1.BOM概念:Browser Object Model 浏览器对象模型作用:提供了使用JS操作浏览器的接口 2.BOM包含了许多对象信息,包括如下这些:(1)screen 屏幕信息(2)locati ...
- echo 改变字体颜色
字颜色:30—–37 echo -e “\033[30m 黑色字 \033[0m” echo -e “\033[31m 红色字 \033[0m” echo -e “\033[32m 绿色字 \033[ ...
- 设置IDEA中properties文件显示中文
路径: File - Setting - Editor - Code Style - File Encodings
- [JZOJ4640] 【GDOI2017模拟7.15】妖怪
题目 描述 题目大意 给你一堆aia_iai和bib_ibi(方便起见用的变量和上面不一样),让你搞出一个xxx(相当于题目中的ba\frac{b}{a}ab,随便推推就能知道), 使得max ...