java的正则表达式你知道多少
作者:xiaostudy 发布时间:2022-06-09 00:09:34
标签:java,正则,表达式
字符 | |
---|---|
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 的控制符 |
字符类 | |
---|---|
[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](减去) |
预定义字符类 | |
---|---|
. | 任何字符(与行结束符可能匹配也可能不匹配) |
\d | 数字:[0-9] |
\D | 非数字: [^0-9] |
\s | 空白字符:[ \t\n\x0B\f\r] |
\S | 非空白字符:[^\s] |
\w | 单词字符:[a-zA-Z_0-9] |
\W | 非单词字符:[^\w] |
Greedy 数量词 | |
---|---|
X? | X,一次或一次也没有 |
X* | X,零次或多次 |
X+ | X,一次或多次 |
X{n} | X,恰好 n 次 |
X{n,} | X,至少 n 次 |
X{n,m} | X,至少 n 次,但是不超过 m 次 |
Reluctant 数量词 | |
---|---|
X?? | X,一次或一次也没有 |
X*? | X,零次或多次 |
X+? | X,一次或多次 |
X{n}? | X,恰好 n 次 |
X{n,}? | X,至少 n 次 |
X{n,m}? | X,至少 n 次,但是不超过 m 次 |
例子
package com.xiaostudy;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MyPattern {
public static void main(String[] args) {
}
private static void demo_Reluctant() {
// 检验规则,单个字母,“+”表示:0次或多次,后面多加一个“?”与不加的区别是:不加的话表示只匹配一次,加的话表示匹配多次
String regex = ".+?222";
// 要检验的对象
String str = "xx222xx222xx222xx222";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建匹配器,给定输入与此模式的匹配
Matcher matcher = pattern.matcher(str);
while (matcher.find())
System.out.println(matcher.start() + "=====" + matcher.end());
// 匹配,返回结果
boolean b = matcher.matches();
if (b)
System.out.println(true);
else
System.out.println(false);
}
private static void demo_aBAb() {
// 检验规则,字母集,“+”表示:0个或多个
String regex = "[abcd]+";
// 要检验的对象
String str = "adbcdbaDACDBDAC";
// 编译正则表达式,不区分大小写
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
// 创建匹配器,给定输入与此模式的匹配
Matcher matcher = pattern.matcher(str);
// 匹配,返回结果
boolean b = matcher.matches();
if (b)
System.out.println(true);
else
System.out.println(false);
}
private static void demo_abcd() {
// 检验规则,字母集,“+”表示:0个或多个
String regex = "[abcd]+";
// 要检验的对象
String str = "adbcdabdcddbadbc";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建匹配器,给定输入与此模式的匹配
Matcher matcher = pattern.matcher(str);
// 匹配,返回结果
boolean b = matcher.matches();
if (b)
System.out.println(true);
else
System.out.println(false);
}
private static void demo_123no() {
// 检验规则,非数字集,“+”表示:0个或多个
String regex = "[^1-9]+";// 等价于\\D+
// 要检验的对象
String str = "+sdoi#$@%@#";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建匹配器,给定输入与此模式的匹配
Matcher matcher = pattern.matcher(str);
// 匹配,返回结果
boolean b = matcher.matches();
if (b)
System.out.println(true);
else
System.out.println(false);
}
private static void demo_123() {
// 检验规则,数字集,“+”表示:0个或多个
String regex = "[1-9]+";// 等价于\\d+
// 要检验的对象
String str = "123";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建匹配器,给定输入与此模式的匹配
Matcher matcher = pattern.matcher(str);
// 匹配,返回结果
boolean b = matcher.matches();
if (b)
System.out.println(true);
else
System.out.println(false);
}
private static void demo_2() {
// 检验规则,单个数字
String regex = "[1-9]";
// 要检验的对象
String str = "2";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建匹配器,给定输入与此模式的匹配
Matcher matcher = pattern.matcher(str);
// 匹配,返回结果
boolean b = matcher.matches();
if (b)
System.out.println(true);
else
System.out.println(false);
}
private static void demo_nm() {
// 检验规则,单个字母,“{n,m}”表示:出现n次到m次之间,包括他们本身
String regex = "x{3,5}";
// 要检验的对象
String str = "xxxxx";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建匹配器,给定输入与此模式的匹配
Matcher matcher = pattern.matcher(str);
// 匹配,返回结果
boolean b = matcher.matches();
if (b)
System.out.println(true);
else
System.out.println(false);
}
private static void demo_n0() {
// 检验规则,单个字母,“{n,}”表示:出现n次或以上
String regex = "x{3,}";
// 要检验的对象
String str = "xxxx";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建匹配器,给定输入与此模式的匹配
Matcher matcher = pattern.matcher(str);
// 匹配,返回结果
boolean b = matcher.matches();
if (b)
System.out.println(true);
else
System.out.println(false);
}
private static void demo_n() {
// 检验规则,单个字母,“{n}”表示:就出现n次
String regex = "x{3}";
// 要检验的对象
String str = "xxx";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建匹配器,给定输入与此模式的匹配
Matcher matcher = pattern.matcher(str);
// 匹配,返回结果
boolean b = matcher.matches();
if (b)
System.out.println(true);
else
System.out.println(false);
}
private static void demo_xxx0() {
// 检验规则,单个字母,“+”表示:0次或多次
String regex = "x+";
// 要检验的对象
String str = "xxx";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建匹配器,给定输入与此模式的匹配
Matcher matcher = pattern.matcher(str);
// 匹配,返回结果
boolean b = matcher.matches();
if (b)
System.out.println(true);
else
System.out.println(false);
}
private static void demo_xxx() {
// 检验规则,单个字母,“*”表示:一次或多次
String regex = "x*";
// 要检验的对象
String str = "xxx";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建匹配器,给定输入与此模式的匹配
Matcher matcher = pattern.matcher(str);
// 匹配,返回结果
boolean b = matcher.matches();
if (b)
System.out.println(true);
else
System.out.println(false);
}
private static void demo_x_01() {
// 检验规则,单个字母,“?”表示:一次或一次都没有
String regex = "x?";
// 要检验的对象
String str = "x";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建匹配器,给定输入与此模式的匹配
Matcher matcher = pattern.matcher(str);
// 匹配,返回结果
boolean b = matcher.matches();
if (b)
System.out.println(true);
else
System.out.println(false);
}
private static void demo_00() {
// 检验规则,单个字母,“.”表示:任何字符
String regex = ".";
// 要检验的对象
String str = "x";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建匹配器,给定输入与此模式的匹配
Matcher matcher = pattern.matcher(str);
// 匹配,返回结果
boolean b = matcher.matches();
if (b)
System.out.println(true);
else
System.out.println(false);
}
private static void demo_x() {
// 检验规则,单个字母
String regex = "x";// 等价于\\w、[a-z]
// 要检验的对象
String str = "x";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建匹配器,给定输入与此模式的匹配
Matcher matcher = pattern.matcher(str);
// 匹配,返回结果
boolean b = matcher.matches();
if (b)
System.out.println(true);
else
System.out.println(false);
}
}
来源:https://www.cnblogs.com/xiaostudy/p/9547187.html
0
投稿
猜你喜欢
- asp替换函数如下:Function ReplaceNoIgnoreCase(str,replStr) &n
- 阅读上一章:Chapter 14 图片替换Chapter 15 为<body>指定样式把内容与显示效果分开设定的好处之一就是灵活
- QUICKSORT(A, p, r)是快速排序的子程序,调用划分程序对数组进行划分,然后递归地调用QUICKSORT(A, p, r),以完
- jieba库是一款优秀的 Python 第三方中文分词库,jieba 支持三种分词模式:精确模式、全模式和搜索引擎模式,下面是三种模式的特点
- 项目说明 该电商项目类似于京东商城,主要模块有验证、用户、第三方登录、首页广告、商品、购物车、订单、支付以及后台管理系统。项目开发模式采用前
- 工具:Jupyter notebook + Anaconda游戏规则: * 一种玩法是买尾号。2元一个数字,中奖是20元。每个数字出现的概率
- Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个。
- 在最近一个项目中,表单验证需要对时间的起止范围进行判断:结束时间需大于或等于开始时间。即:结束年须大于起始年;如果相等,则比较起始月与结束月
- 这次讨论一下关于select元素的一个问题,其实很早以前我就碰到过关于select元素的问题,这次做网站又被问到同样的问题,就是:一般div
- pandas有groupby分组函数和sort_values排序函数,但是如何对dataframe分组之后排序呢?In [70]: df =
- 一、语法:cap = cv2.VideoCapture(0)说明:参数0表示默认为笔记本的内置第一个摄像头,如果需要读取已有的视频则参数改为
- 当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(包括机器故障、介质故障、误操作等),数据库有时也可能遭到
- 那你也许会问及,怎样获取当前系统日期的最大时间值,如yyyy-MM-dd 23:59:59.997。 我们可以使用DATEADD函数,来实现
- Exec sp_droplinkedsrvlogin ZYB,Null --删除映射(录与链接服务器上远程登录之间的映射) Exec sp_
- 本文实例讲述了Python实现简单的列表冒泡排序和反转列表操作。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-
- 背景近期看到一篇文章,真的感叹作者的洞察力,在开发时有可能就会犯这样的错误,所以一定要多学习,多实践。其问题就是你在提交事务时,如果中间有其
- 列表的添加1)+ 添加2)append 追加一次只能添加一个元素到列表中,适合用于循环里3)extend 拉伸可一次添加多个元素到列表中4)
- 本文实例为大家分享了Python实点云分割k-means(sklearn),供大家参考,具体内容如下植物叶片分割import numpy a
- 前言把以前一直只限于知道,却不清晰理解的这几个概念完完整整地梳理了一番。内容参考自wiki页面,然后加上自己一些理解。词法作用域和动态作用域
- 我就废话不多说了,直接上代码吧!import Imagefrom datetime import datetimeimport osstr