正则表达式:又称郭泽表达式 .为了验证输入内容是否符合标准而定义的一套规则.
如果一个字符串作为正则表达式,只能匹配自身.搜索,查询,匹配,调换都用于正则表达式
^以什么开头 $以什么结尾
[]是一个字符 等价于 [0-9]
{9}一共有9位 例:[0-9]{9} 有9位数字 0-9
^不包含字符 例:[^012]不包含0或者1或者2
[1,4]一位到4位
{9,}最少9位
+{1,}最少1位 ?(0,1)0位或者1位 *(0)最少0位
.通配所有
\d 代表[0-9] \w[0-9a-zA-Z_] \ 转义字符
正则表达式匹配手机号
^1[3,4,5,7,8,9]\d{9}
匹配100..||10..||0..
^[1-9][0-9]{0,}|^0{1}\.[0-9]+
匹配案例:
boolean istag = "dabainzhenhaoo123467".matches("^[a-zA-Z]\\w{5,19}$");
System.out.println(istag);
搜索:
String luhan = "鹿晗(LU HAN),1990年4月20日出生于北京海淀区,中国内地影视男演员、歌手。2008年赴韩国留学期间在明洞逛街时,被韩国SM娱乐有限公司星探发掘成为旗下练习生。2012年4月以韩国男子组合EXO/EXO-M成员正式出道,组合内担任主唱、领舞、门面担当。2015年1月,主演的首部电影《重返20岁》上映,凭借此片获第22届北京大学生电影节最受欢迎男演员奖[5] 。5月,登《福布斯》杂志中文版封面[6] 。8月,加盟综艺节目《奔跑吧兄弟第三季》[7] 。10月,主演的悬疑电影《我是证人》上映[8] 。12月,个人首张专辑《Reloaded(重启)》全球发行[9-10] 。";
Pattern p = Pattern.compile("《.{2,10}》");
Matcher m = p.matcher(luhan);
while (m.find()) {
String str = m.group();
System.out.println(str);
String str1 = str.substring(1,str.length()-1);
System.out.println(str1);
}
案例2:
匹配:windows98 windows2000 windows2007
Pattern p1 = Pattern.compile("(?<=windows)(\\d{2}\\d{4})");
Matcher m1 = p1.matcher("windows2000
while (m1.find()) {
String str = m1.group();
System.out.println(str);
String str1 = str.substring(1,str.length()-1);
System.out.println(str);
}
替换
String des = "我的电话15358479570 你的电话13648067469";
String newDes = des.replaceAll("1[34578]\\d{9}", "电话");
System.out.println(newDes);
分割
String[] dess = des.split("1[34578]\\d{9}");
System.out.println(Arrays.toString(dess));
1、以 $ 开始
2、整数部分,从个位起,满 3 个数字用 , 分隔
3、如果为小数,则小数部分长度为 2
4、正确的格式如:$1,023,032.03 或者 $2.03,错误的格式如:$3,432,12.12 或者 $34,344.3
public class HomeWork2 {
public static void main(String[] args) {
String regix1 = "\\$(0{1}|([1-9]\\d{0,2}(,\\d{3})*))(\\.\\d{2})?";
boolean isTag = "$1,023,032".matches(regix1);
System.out.println(isTag);
}
}
String str = '我草你妈哈哈背景天胡景涛哪肉涯剪短发欲望';
通过正则过滤敏感词,结果为
我*你妈哈哈背景天***哪*涯剪短发*望
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//敏感词过滤
public class HomeWork1 {
public static void main(String[] args) {
String str = "我草你妈哈哈背景天胡景涛哪肉涯剪短发欲望";
// 1. 匹配
String regex = "(草|胡景涛|肉|欲)";
// 创建一个正则模板
Pattern p = Pattern.compile(regex);
//编译正则
Matcher m = p.matcher(str);
while (m.find()) {
String temp = m.group();
str = str.replace(temp, getStar(temp.length()));
}
System.out.println(str);
}
static String getStar(int length) {
String temp = "";
for(int i = 0; i < length;i++) {
temp+="*";
}
return temp;
}
}