ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-11-01

2021-11-01 23:59:31  阅读:168  来源: 互联网

标签:11 regex 01 String 正则 2021 str println public


java 正则表达式

在java.util.regex包里面定义了两个主要的类:
·Pattern类:此类对象如果要想使用必须使用compile()方法,方法的功能是编译正则
public static Pattern compile(String regex);
·Matcher类:通过Pattern类取得
public Matcher matcher(CharSequence input);
String stb = “heiaiwedhfa4ae6df54asfdaewadfes”;
Pattern compile = Pattern.compile("[e]");//Pattern类通过static方法拿到Pattern类的对象
Matcher m = compile.matcher(stb);//Matcher通过Pattern的方法matcher(CharSequence input)拿到Matcher类的对象
while(m.find()) {//Matcher类对象通过find()方法得到取得的结果
System.out.println(m.group());Matcher类对象通过group()方法输出结果
}

3.2、正则标记
1、单个字符(数量:1)
·字符:表示由一个字符组成
·\:表示转义字符“\”
·\t:表示一个“\t”符号
·\n:表示匹配换行(\n)
2、字符集(数量:1)
·[abc]:表示可能是字符a、b、c中的任意一位字符
·[^abc]:表示不是a、b、c中的任意一位字符
·[a-z]:表示所有的小写字母
·[a-z A-Z]:表示任意的一位字母,不区分大小写
·[0-9]:表示任意一位数字
3、简化的字符集表达式(数量:1)
·.:表示任意的一位字符
·\d:等价于[0-9]
·\D:等价于[^0-9]
·\s:表示任意的一位空白字符例如:“\t”、“\n”
·\S:表示任意的一位非空白字符
·\w:等价于[a-z A-Z _ 0-9],表示由任意的字母数字_所组成
·\W: 等价于[^a-z A-Z _ 0-9],表示不是由任意的字母数字_所组成
4、边界匹配(在java script中使用)
^:正则的开始
$:正则的结束
5、数量表达式
正则?:表示此正则可以出现0或1次
正则+:表示此正则可以出现1次或多次
正则*:表示此正则可以出现0、1次或多次
正则{n}:表示次正则正好出现n次
正则{n,}:表示次正则正好出现n次或n次以上
正则{n,m}:表示此正则出现n~m次
6、逻辑运算
正则1正则2:正则1判断完成之后继续判断正则2
正则1|正则2:正则1或正则2有一组满足即可
(正则):将多个正则作为一组,可以为这一组单独设置出现的次数
3.3、String类对正则的支持
在jdk1.4之后,由于正则的引入,所以String类里面也相应的增加了新的操作方法支持
public boolean matches(String regex):正则验证,使用指定的字符串判断其是否符合给出的的正则表达式结构
public String replaceAll(String regex, String replacement):全部替换
public String replaceFirst(String regex, String replacement):替换首个
public String[] split(String regex):全部拆分
public String[] split(String regex, int limit):部分拆分

范例:实现字符串替换
public class TestDemo {
public static void main(String[] args) {
String str = “weldsafk*)()*asdlkfjao#$afdklja” ;
String regex ="[^a-z]";
System.out.println(str.replaceAll(regex,""));
}
}
范例:字符串拆分
public class TestDemo {
public static void main(String[] args) {
String str = “lak8dfja5644asdf99ja” ;
String regex ="\d+";
String result [] = str.split(regex);
for(int x = 0 ;x < result.length ;x ++) {
System.out.println(result[x]);
}
}
}
所有正则之中最应该兴奋的事情是因为可以使用它进行验证
范例:验证一个字符串是否是数字,如果是将其变为double型
public class TestDemo {
public static void main(String[] args) {
String str = “10.2” ;
String regex ="\d+(\.\d+)?";
System.out.println(str.matches(regex));
if(str.matches(regex)) {
System.out.println(Double.parseDouble(str));
}
}
}
范例:判断给定的字符串是否是IP地址(IPV4)
public class TestDemo {
public static void main(String[] args) throws Exception{
String str = “192.168.1.1” ;
String regex ="(\d{1,3}\.){3}\d{1,3}";
System.out.println(str.matches(regex));
}
}
范例:给定一个字符串判断是否是日期格式,如果是则将其转换为Data型数据
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDemo {
public static void main(String[] args) throws Exception{
String str = “2009-03-23” ;
String regex ="\d{4}-\d{2}-\d{2}";
System.out.println(str.matches(regex));
if(str.matches(regex)) {
Date data = new SimpleDateFormat(“yyyy-MM-dd”).parse(str);
System.out.println(data);
}
}
}
范例:判断电话号码,一般要编写电话号码一下几种格式都是满足的:
·格式一:51283346
·格式二:010-51283346
·格式三:(010)-51283346
public class TestDemo {
public static void main(String[] args) throws Exception{
String str = “51283346” ;
String regex ="((\d{3,4}-)|(\(\d{3,4}\))-)?\d{7,8}";
System.out.println(str.matches(regex));
}
}
范例:验证email地址
·要求格式一:email由字母、数字、所组成
·要求格式二:用户名要求由字母、数字、
、.组成,其中必须以字母开头和结尾,用户名长度不超过30最后的根域名只能是.com、.cn、.net、.com.cn、.net.cn、.edu、.gov、.org
public class TestDemo {
public static void main(String[] args) throws Exception{
String str = “hello_123@mldn.cn” ;
String regex ="[a-zA-Z][a-zA-Z0-9_\.]{0,28}@\w+\.(net|cn|com|\.cn|net\.cn|org|gov|edu)";
System.out.println(str.matches(regex));
}
}
范例:验证汉字
public class TestDemo {
public static void main(String[] args) throws Exception{
String sta = “你好”;
String reg = “.+”;
System.out.println(sta.matches(reg));
}
}

标签:11,regex,01,String,正则,2021,str,println,public
来源: https://blog.csdn.net/qq_42873827/article/details/121091652

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有