java正则表达式的使唤
示例代码:
package com.target.start; import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
* 正则表达式:符合一定规则的表达式,Pattern类,通俗的说就是用符号表示一定的字符规则。
* 作用:用于专门操作字符串,可以简化对字符串的复杂操作,提高编程的效率。
* 下面我们将介绍对正则表达式的具体操作,一般都得自己查表查到具体字符代表什么,这也是它的弊端,阅读性差
* 特点:正则表达式操作起来简单,但是正则表达式的书写稍微有点困难
*/
public class test { public static void main(String[] args)
{
String a="a";
String b="basdsf";
String c="155511385";
String d="02541454";
String e="265156153153153153415";
String f="abfsdfabfsdfabdasbfabhtr";
String g="aaf fsf gdfger fgerg";
//匹配,由于具体的字符串太多,我们在此只给出几个例子,只要有一处不符合则返回false
System.out.println("1.判断一个字符是否为a或b或c:"+a.matches("[abc]"));
System.out.println("2.判断一个字符是否不为a或b或c:"+a.matches("![abc]"));
System.out.println("3.判断一个字符是否是字母:"+a.matches("[a-z A-Z]"));
System.out.println("4.判断一个字符是否是数字:"+a.matches("[0-9]"));
System.out.println("5.判断是否为长度4到10的字母组成的字符串:"+a.matches("[a-z A-z]{4,10}"));
System.out.println("6.判断是否为长度4到10的字母组成的字符串:"+b.matches("[a-z A-z]{4,10}"));
System.out.println("7.判断是否为首字符不为0,后边的字符一共4到10位:"+c.matches("[1-9][0-9]{4,10}"));
System.out.println("8.判断是否为首字符不为0,后边的字符一共4到10位:"+d.matches("[1-9][0-9]{4,10}"));
System.out.println("9.判断是否为首字符不为0,后边的字符一共4到10位:"+e.matches("[1-9][0-9]{4,10}"));
//替换
System.out.println("10.替换符合正则表达式的所有字符为新字符:"+f.replaceAll("[a][b]", "#"));
//获取,通过group操作
String reg="[1][5][6]";//定义规则,找156的字符串
Pattern p=Pattern.compile(reg);//将规则封装为对象
Matcher m=p.matcher(e);//将正则对象和要作用的字符串相关联并获得匹配器对象
while(m.find())//得先找到,才能获取
{ //坐标从0开始,[start,end)半开半闭区间
System.out.println("group:"+m.group());//获取字符串 156
System.out.println("start:"+m.start());//开始位置 3
System.out.println("end:"+m.end());//结束位置,包含头不包含尾 6
}
//切割,尤其是表达式的书写,多注意转义字符\,在此只给出一个了例子
String[] h=g.split(" +");
for(String x:h)
{
System.out.println("以多个空格进行切割:"+x);//十分重要
/*以多个空格进行切割:aaf
以多个空格进行切割:fsf
以多个空格进行切割:gdfger
以多个空格进行切割:fgerg
*/
}
}
}
split("\\s+") 和 split(" +") 有什么区别?
- \\s表示 空格,回车,换行等空白符,
- +号表示一个或多个+前面字符
常用语法:
"^The":匹配以"The"开始的字符串;
"en d$":匹配所以以"en d"结尾的字符串;
"^abc$":表示开始和结尾都是"abc"的字符串——呵呵,只有"abc"自己了; "ab*":匹配一个a后面跟着零个或若干个b。("a", "ab", "abbb",……);
"ab+":匹配一个a后面跟着至少一个b或者更多;
"ab?":匹配一个a后面跟着零个或者一个b;
"a?b+$":匹配末尾有零个或一个a跟着一个或几个b。 "[ab]":表示一个字符串有一个"a"或"b"(相当于"a|b");
"[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a|b|c|d"或者"[abcd]");
"^[a-zA-Z]":表示一个以字母开头的字符串;
"[0-9]%":表示一个百分号前有一位的数字;
",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。 "ab{2}":匹配字符串有一个a跟着2个b("abb");
"ab{2,}":匹配字符串有一个a跟着至少2个b;
"ab{3,5}":匹配字符串有一个a跟着3到5个b。 "hi| hello":表示一个字符串里有"hi"或者"hello";
"(b | cd)ef":表示"bef"或"cdef";
"(a | b)*c":表示一串"a""b"混合的字符串后面跟一个"c";
'.'可以替代任何字符: "a.[0-9]":表示一个字符串有一个"a"后面跟着一个任意字符和一个数字;
"^.{3}$":表示有任意三个字符的字符串(长度为3个字符); 方括号里用'^'表示不希望出现的字符,'^'应在方括号里的第一位
为了逐字表达,你必须在"^.$()¦*+?{\"这些字符前加上转移字符'\'。
请注意在方括号中,不需要转义字符。 \d:代表一个数字,等同于[0-9] 如a[0-9]b a\db
\D:代表非数字,等同于[^0-9]
\s:代表换行符、Tab制表符等空白字符 ,(空格、回车、制表符)
\S:代表非空白字符,等价于等价于 [^ \f\n\r\t\v]
\w:匹配字母或数字或下划线或汉字,即能组成单词的字符,除%&#@!$等字符。[a-zA-Z0-9_汉字]
\W:非\w ,等同于[^\w] %
经典匹配
"^\d+$" //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\d+)|(0+))$" //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?\d+$" //整数
"^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?\d+)(\.\d+)?$" //浮点数
"^[A-Za-z]+$" //由26个英文字母组成的字符串
"^[A-Z]+$" //由26个英文字母的大写组成的字符串
"^[a-z]+$" //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串
"^\w+$" //由数字、26个英文字母或者下划线组成的字符串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil
"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?" //电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址 ^([0-9A-F]{2})(-[0-9A-F]{2}){5}$ //MAC地址的正则表达式
^[-+]?\d+(\.\d+)?$ //值类型正则表达式
java正则表达式的使唤的更多相关文章
- java正则表达式
java正则表达式 1.Java正则表达式的语法与示例: http://baike.xsoftlab.net/view/207.html 2.Java 正则表达式: http://www.runo ...
- Java正则表达式入门——转自RUNOOB.COM
Java 正则表达式 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. Java正则表达式和Perl的是最为相似 ...
- Java 正则表达式详解
Java 提供了功能强大的正则表达式API,在java.util.regex 包下.本教程介绍如何使用正则表达式API. 正则表达式 一个正则表达式是一个用于文本搜索的文本模式.换句话说,在文本中搜索 ...
- 【转】详解Java正则表达式语法
(转自: http://www.jb51.net/article/76354.htm) 这篇文章主要介绍了Java正则表达式语法,包括常用正则表达式.匹配验证-验证Email是否正确以及字符串中查询字 ...
- java正则表达式【大全】
[正则表达式]文本框输入内容控制整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$".只能输入n位的数字:"^\d{n}$& ...
- JAVA正则表达式:Pattern类与Matcher类详解(转)
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...
- JAVA正则表达式:Pattern类与Matcher类详解
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...
- Java 正则表达式[转载]
PS:转载自CSDN博客看上去很美 众所周知,在程序开发中,难免会遇到需要匹配.查找.替换.判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力.因此,学 ...
- Java正则表达式的应用
在很多种情况下,我们都必须对字符串进行匹配,以便判断字符串的格式是否符合要求,对字符串中的内容进行提取.比如,我要从一段话aabdfe中,判断这段话是否有包含ab这个词,那么如果用if-else来判断 ...
随机推荐
- chrome获取xpath元素-f12工具
Chrome浏览器获取XPATH的方法----通过开发者工具获取 引用源:https://blog.csdn.net/li6727975/article/details/46126079 版权声明 ...
- Linux设备驱动程序 之 poll和select
使用非阻塞IO的应用程序经常使用select,poll,epoll系统调用:它们的功能本质上是一样的:都允许进程决定是否可以对一个或者多个打开的文件做非阻塞的读取或者写入:这些电泳也会阻塞进程,直到给 ...
- 单调队列优化dp,k次移动求最长路
洛谷2254 给你k次移动 每次移动给你一个时间段 a,b和方向dir 地图上有障碍物 为了不撞上障碍物你可以施法让箱子停下来 问箱子可以走的最长路 ((以下是洛谷的题解)) /*首先考虑对于时间t来 ...
- phpstorm配置了git后Terminal 不能使用显示:git' 不是内部或外部命令,也不是可运行的程序
问题:在phpstorm上配置好git后,将代码拉了下来 ,但是命令行无法使用显示如图 解决方法:①找到安装git的位置,然后在该目录的子目录下分别找到git-core.bin 两个目录,我的安装在了 ...
- 使用git send-email发送邮件时报错: Unable to initialize SMTP properly怎么处理?
答: 配置~/.gitconfig中的smtpserver 需往~/.gitconfig中添加如下内容: [sendemail] smtpserver = <stmp_server_name ...
- Android中图片优化
1.对图片进行压缩:建议使用TinyPNG工具压缩 2.WebP格式(支持4.0以上)可减少文件大小 3.尽量使用NinePatch的PNG 4.图片缓存
- python 生成词云
1.知识点 """ WordCloud参数讲解: font_path表示用到字体的路径 width和height表示画布的宽和高 prefer_horizontal可以调 ...
- 原生vue实现表格的编辑,包括单元格合并,拆分,删除行/列, 添加行/列
先看效果图如下: 代码看这里: https://github.com/YalongYan/vue-table-edit
- NetCore WebApi使用Jwtbearer实现认证和授权
1. 什么是JWT? JWT是一种用于双方之间传递安全信息的简洁的.URL安全的表述性声明规范.JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对 ...
- Chrome浏览器界面截图
常常出现这么一个场景: 网页比较长,需要滚动屏幕才能看完整.这时候如需截屏,则比较麻烦. 如下为解决方法: 推荐Chrome浏览器: 按F12打开调试页面,同时按下ctrl + shift + p, ...