廖雪峰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/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 匿名函数 通过 ...
随机推荐
- docker 可持续集成及日志管理及监控报警
- Python第二课-输入输出
name = input() 输入的字符串已经赋值给变量name print() 输出内容 print(,) print中,连接字符串相当于空格
- angular 级联选择
HTML: <link rel="stylesheet" href="views/tree/checkbox.css"/> <div clas ...
- 《我是一只IT小小鸟》读书笔记 PB16110698 第四周(~3.29)
<我是一只IT小小鸟>读书笔记 本周在邓老师的推荐下,我阅读了<我是一只IT小小鸟>,这本书由21位初入职场的IT人的传记组成,记录了他们成长道路上的酸甜苦辣.书中一段段鲜活生 ...
- UMP系统功能 数据安全
- Linux安装Java与Eclipse
Linux安装Java和Eclipse 一.准备工作 1.下载jdk https://www.oracle.com/technetwork/java/javase/downloads/jdk8-do ...
- Android开发 TextView的开发记录
前言 此篇博客是记录一些TextView开发上一些少用的开发功能项.目前开发记录如下: 添加图片 文字滚动 添加省略号 实现长文的收起和展开功能 改变一个字符串里自定字符的颜色或者大小 效果字体(粗体 ...
- JUC 一 CopyOnWriteArrayList 和 CopyOnWriteArraySet
java.util.concurrent; 简介 CopyOnWriteArrayList是一个线程安全的ArrayList,通过内部的volatile数组和显式锁ReentrantLock来实现线程 ...
- 有关阿里云对SaaS行业的思考,看这一篇就够了
过去二十年,随着改革开放的深化,以及中国的人口红利等因素,中国诞生了大批To C的高市值互联网巨头,2C的领域高速发展,而2B领域一直不温不火.近两年来,在C端流量饱和,B端数字化转型来临的背景下,中 ...
- thinkphp 命名范围
在应用开发过程中,使用最多的操作还是数据查询操作,凭借ThinkPHP的连贯操作的特性,可以使得查询操作变得更优雅和清晰,命名范围功能则是给模型操作定义了一系列的封装,让你更方便的操作数据. 命名范围 ...