Java正则匹配的一些小例子(待更新)

* [abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)

例子:

String regex = "[a-z&&[^m-p]]";
System.out.println("m".matches(regex));

*. 任何字符
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]

例子:

String regex = "\\W";
System.out.println("a".matches(regex));
System.out.println("z".matches(regex));

false
false

Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次

用例:

String regex = "[abc]{5,15}";
System.out.println("abcba".matches(regex));
System.out.println("abcbaabcabbabab".matches(regex));

正则表达式的分组功能
* 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
*
1 ((A)(B(C)))
2 (A
3 (B(C))
4 (C)

组零始终代表整个表达式。
B:案例演示
a:切割
需求:请按照叠词切割: "sdqqfgkkkhjppppkl";
b:替换
需求:我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程
将字符串还原成:“我要学编程”。

用例:

String s3 = s2.replaceAll("(.)\\1+", "$1"); //$1代表第一组中的内容

A:正则表达式的获取功能
* Pattern和Matcher的结合使用
B:案例演示
* 需求:把一个字符串中的手机号码获取出来

Matcher m = p.matcher(regex);
boolean b = m.matches(s);

String s = "我的手机是18511866260,我曾用过18987654321,还用过18812345678";
String regex = "1[3578]\\d{9}";

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);

/*boolean b1 = m.find();
System.out.println(b1);
System.out.println(m.group());

  

原文地址:https://www.cnblogs.com/lvpengbo/p/12248736.html

时间: 2024-10-10 12:18:17

Java正则匹配的一些小例子(待更新)的相关文章

java操作xml的一个小例子

最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要定义好bean的层次结构就可以了,第三方包会自动生成和解析xml. 但是今天发现,这个包有两个问题: 一个是比较复杂(我是菜鸟,求别喷,我真的觉得他挺复杂的..).比如说你要想处理既有属性又有值的xml就比较麻烦.(@XStreamConverter注解这种方法报这个错:com.thoughtwor

java 正则匹配提取html纯文本

本文来自于我的个人博客: java 正则匹配提取html纯文本 做内容的大家都知道,从html中直接提取纯文本是一个很大的问题,现将我做的正则匹配贴上: import java.util.regex.Matcher; import java.util.regex.Pattern; public class TestReg { static String reg = "<[a-zA-Z]+.*?>([\s\S]*?)</[a-zA-Z]*>"; public st

关于JAVA正则匹配空白字符的问题(全角空格与半角空格)

今天遇到一个字符串,怎么匹配空格都不成功!!! 我把空格复制到test.properties文件 显示“\u3000” ,这是什么? 这是全角空格!!! 查了一下    \s    不支持全角 1."\s"匹配的是哪一种空格? 正则表达式中\s匹配任何空白字符,包括空格.制表符.换页符等等:中文全角空格 \s 并不能匹配中文全角空格. \s 只能匹配下面六种字符(详见 java.util.regex.Pattern 的 API DOC): 半角空格( ) 水平制表符(\t) 竖直制表符

4-30 Java正则匹配

做CC时经常要用正则表达式过滤数据,当时洗的数据比较复杂,规则比较多.这次做leetcode,复习一下Java的正则匹配.Leetcode 537. Complex Number Multiplication 从表示复数的字符串里把实部和虚部取出来. http://blog.csdn.net/yin380697242/article/details/52049999 Pattern类,构造函数是私有类型,不能通过new新建,要通过Pattern.compile()获得一个匹配模式.Pattern

java连接mysql的一个小例子

想要用java 连接数据库,需要在classpath中加上jdbc的jar包路径 在eclipse中,Project的properties里面的java build path里面添加引用 连接成功的一个小例子数据库如下如 代码 package query; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; impor

JAVA数据库应用的一个小例子

自己随便写的,以炉石为背景,写一个参考用的小例子,先上SQL表: if OBJECT_ID('card_pool') is not null drop table card_pool; create table card_pool( card_id int identity(1,1) not null, card_name varchar(32), card_occupation varchar(32), --卡牌职业:中立.德鲁伊.猎人.法师.圣骑士.牧师.潜伏者.萨满祭司.术士.战士 car

java正则匹配

java正则提取需要用到Matcher类,下面给出案例示例供参考 需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test {public static void main(String[] args) {String s = "A876X";// 把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来

学习java正则与集合框架小总结

包装类--就是基础数据类型的升级 由于基本数据类型能力有限,所以将基本数据类型都封装为类--包装类 什么是正则表达式呢? 一句话:一个规则 正则表达式可以是: 1.一个给定的值--就必须和给定的值一样 2.一个范围--只要满足范围,即满足正则表达式 正则表达式的简单介绍: 1.[a-z],任何含在[]中的内容都是一个字符,只匹配一个字符. 2.[^a-z].匹配任何不属于a-z中的字符. 3./d.匹配数字,相当于[0-9] 4./D.匹配非数字,相当于[^0-9],匹配中文,空格,换行符 5.

Java正则匹配数字

包括5种形式,如测试结果 import java.util.Scanner; import java.util.regex.*; public class Com { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String str=sc.nextLine(); Pattern p = Pattern.compile("\\d+||\\d*\\