java 正则举例
| Greedy 数量词 | |
|---|---|
| X? | X,一次或一次也没有 |
| X* | X,零次或多次 |
| X+ | X,一次或多次 |
| X{n} | X,恰好 n 次 |
| X{n,} | X,至少 n 次 |
| X{n,m} | X,至少 n 次,但是不超过 m 次 |
| 预定义字符类 | |
|---|---|
| . | 任何字符(与行结束符可能匹配也可能不匹配) |
| \d | 数字:[0-9] |
| \D | 非数字: [^0-9] |
| \s | 空白字符:[ \t\n\x0B\f\r] |
| \S | 非空白字符:[^\s] |
| \w | 单词字符:[a-zA-Z_0-9] |
| \W | 非单词字符:[^\w] |
| 字符 | |
|---|---|
| x | 字符 x |
| \\ | 反斜线字符 |
| \0n | 带有八进制值 0 的字符 n (0 <= n <= 7) |
| \0nn | 带有八进制值 0 的字符 nn (0 <= n <= 7) |
| \0mnn | 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7) |
| \xhh | 带有十六进制值 0x 的字符 hh |
| \uhhhh | 带有十六进制值 0x 的字符 hhhh |
| \t | 制表符 ('\u0009') |
| \n | 新行(换行)符 ('\u000A') |
| \r | 回车符 ('\u000D') |
| \f | 换页符 ('\u000C') |
| \a | 报警 (bell) 符 ('\u0007') |
| \e | 转义符 ('\u001B') |
| \cx | 对应于 x 的控制符 |
忽略大小写:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
1.方法1:
public class Test { public static void main(String[] args) throws Exception {
String str="forM"; String regEx="form"; //表示a或f Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE); //表示整体都忽略大小写 Matcher m=p.matcher(str); boolean rs=m.find();
System.out.println(rs);
} }
//方法2:java正则表达式:
(?i)abc 表示abc都忽略大小写
a(?i)bc 表示bc忽略大小写
a((?i)b)c 表示只有b忽略大小写
import java.util.regex.*;
class Regex
{
public static void main(String[] args)
{
String str = "faaafbbdbddd";
String[] strArry = str.split("(.)\\1+");//以连续出现两次以上的字符为分界点,分割字符串
for(String s:strArry)
System.out.println(s);
System.out.println("-------------------------华丽分割线-----------------------------------");
System.out.println(str.replaceAll("(.)\\1+","$1"));//置换匹配的子字符串“$”可以用来取第一个参数中的组
System.out.println(str.matches(".*[d]{3}.*"));//判断整个字符串是否匹配
System.out.println("-------------------------华丽分割线-----------------------------------");
String str2 = "aaa,ff,ddd,sdss,dsa,dgdgdg,sss";
String reg = "\\b[a-z]{3}\\b";//取三个连续的,两边有边界分割
Pattern p = Pattern.compile(reg);//匹配规则封装
Matcher m = p.matcher(str2);//将匹配规则和要匹配的字符串组合生成匹配引擎
//System.out.println("m.matches():"+m.matches());这一句会使匹配的游标后移到第一个不匹配的位置:第一个f
while(m.find())//引擎可以方便的根据自己的字符串和匹配规则执行一些操作,比如find:找到下一个匹配的子字符串
/*获取、输出匹配的字段、起始位置、终了位置+1*/
System.out.println(m.group()+
"...m.start():"+m.start()+
"...m.end():"+m.end());
}
}
示例三:
public class RegTest {
public static void main(String[] args) throws Exception {
String str="formfirnformsajfowiehongform";
String regEx="f.*?m"; //
Pattern p=Pattern.compile(regEx); //表示整体都忽略大小写
Matcher m=p.matcher(str);
int i = 0;
while(m.find()) {
System.out.println(m.group()+"------起始位置:"+m.start()+";结束位置"+m.end()+";长度:"+(m.end()-m.start()));
i++;
}
System.out.println("字符串form在str中出现的次数为:"+i);
System.out.println(str.substring(4, 12));
}
}
java 正则举例的更多相关文章
- Java正则速成秘籍(一)之招式篇
导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...
- Java正则速成秘籍(二)之心法篇
导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...
- Java正则速成秘籍(三)之见招拆招篇
导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...
- java 正则匹配空格字符串 正则表达式截取字符串
java 正则匹配空格字符串 正则表达式截取字符串 需求:从一堆sql中取出某些特定字符串: 比如配置的sql语句为:"company_code = @cc and project_id = ...
- url 中非法字符替换,java 正则替换
url在传输时不允许的一些字符串,参考自:http://www.ietf.org/rfc/rfc1738.txt 以下字符用java正则替换为"_",一句话搞定: "{& ...
- 通用且常用的Java正则匹配工具,用以检查邮箱名、电话号码、用户密码、邮政编码等合法性
一个通用且常用的Java正则匹配工具,用以检查邮箱名.电话号码.用户密码.邮政编码等合法性. import java.util.regex.Matcher; import java.util.rege ...
- java正则匹配
java正则提取需要用到Matcher类,下面给出案例示例供参考 需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6import java.util.regex.Matche ...
- 面试题-Java设计模式举例
面试题-Java设计模式举例 1.适配器模式 涉及三个角色:Target目标接口.Adaptee源角色.Adapter适配器:Adapter将源接口适配到目标接口,继承源接口,实现目标接口. Java ...
- Java正则表达中Greedy Reluctant Possessive 的区别
Java正则表达中Greedy Reluctant Possessive 的区别 分类: java2015-01-16 00:28 1280人阅读 评论(9) 收藏 举报 正则表达式Java 目录 ...
随机推荐
- C#各种异常处理方式
.NET的异常处理机制用来发现.处理运行时错误.如果开发人员没有提供异常的处理机制,就默认采用.NET的机制. 通常使用try...catch...finally捕获异常. try { //有可能发生 ...
- Spring MVC的异步模式DefferedResult
原文:http://www.importnew.com/21051.html 什么是异步模式 要知道什么是异步模式,就先要知道什么是同步模式,先看最典型的同步模式: (图1) 浏览器发起请求,Web服 ...
- mac OS X下配置jdk环境变量
进入命令行,开始如下操作: cd ~touch.bash_profile vi .bash_profile 输入内容jdk变量配置内容: export JAVA_HOME=/Library/Jav ...
- 北京市基本医疗保险A类定点医疗机构名单(2010-09-29)
1.中国医学科学院北京协和医院 2.首都医科大学附属北京同仁医院 3.首都医科大学宣武医院 4.首都医科大学附属北京友谊医院 5.北京大学第一医院 6.北京大学人民医院 7.北京大学第三医院 8.北京 ...
- 如何解决Maven速度慢
注:oschina已失效 Maven 远程仓库 <mirror> <id>ui</id> <mirrorOf>central</mirrorOf& ...
- Git 学习(八)其他
Git 学习(八)其他 通过以上七章Git的学习,基本操作已差不多了,本章介绍一点落网之鱼: 包括如何忽略文件.配置别名.以及使用GitHub等. 当然,Git的强大远不是七章内容可概括的,之后可结 ...
- State 状态模式 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Charles Proxy for Mac & Windows (4.1.3)破解激活工具
1.简介 2017年7月10日更新本博客,Charles已经更新到了4.1.3版本,并对应地给出破解jar包. Charles是一个Mac和Windows平台都可以使用的抓包工具,它的破解激活非常简单 ...
- Back Track 5 之 网络踩点(二)
操作系统探测 Xprobe2 通过ICMP协议来获得指纹,通过模糊矩阵统计分析主动探测数据包对应的ICMP数据特征,进而探测得到远端操作系统的类型. 格式: ./xprobe2 域名 ./xprobe ...
- 【MySQL】MySQL-主从复制-集群方案-数据一致性问题解决方案 && MySQL备份的各种姿势
1.写性能如何保证:分库分表 2.读性能如何保证:主从结构,实时备份 3.一致性问题怎么解决: 3.1.微博案例:Redis缓存,热数据查询走Redis,主从的延迟通过Redis消除 3.2.支付宝的 ...