java正则表达式
正则表达式是一种用于匹配字符串的工具,Java提供了一套强大的正则表达式API,可以让我们方便地使用正则表达式进行字符串操作。本文将详细介绍Java正则表达式的使用方法,包括语法、常用方法、示例等内容。
(资料图片)
一、正则表达式语法
在Java中,正则表达式使用的是Perl 5语法。正则表达式由普通字符和特殊字符组成,普通字符就是字母、数字和一些特殊字符,特殊字符有特殊的含义,用于描述一些复杂的匹配规则。
普通字符
普通字符就是指除特殊字符以外的字符,它们在正则表达式中表示它们本身。例如,正则表达式中的字母和数字表示它们本身,例如正则表达式 "abc123" 匹配的是字符串 "abc123"。
特殊字符
在正则表达式中,特殊字符用于表示一些特定的含义,例如:
(1)单个字符匹配
. :表示匹配任意一个字符,不包括换行符。
[] :表示匹配其中任意一个字符。
^ :表示匹配除了指定字符以外的任意一个字符。
\d :表示匹配任意一个数字,等价于[0-9]。
\D :表示匹配任意一个非数字,等价于[^0-9]。
\w :表示匹配任意一个字母或数字或下划线,等价于[a-zA-Z_0-9]。
\W :表示匹配任意一个非字母或数字或下划线,等价于[^a-zA-Z_0-9]。
\s :表示匹配任意一个空格字符,包括空格、制表符和换行符。
\S :表示匹配任意一个非空格字符。
(2)重复匹配
:表示匹配前面的字符0次或多次。:表示匹配前面的字符1次或多次。? :表示匹配前面的字符0次或1次。
{n} :表示匹配前面的字符恰好n次。
{n,} :表示匹配前面的字符至少n次。
{n,m} :表示匹配前面的字符至少n次,最多m次。
(3)位置匹配
^ :表示匹配字符串的开头。
$ :表示匹配字符串的结尾。
\b :表示匹配单词边界。
\B :表示匹配非单词边界。
二、Java正则表达式API
Java提供了Pattern和Matcher两个类来支持正则表达式操作。其中,Pattern类表示正则表达式模式,Matcher类表示匹配结果。下面介绍Pattern类和Matcher类的常用方法。
Pattern类方法
(1)compile(String regex):将正则表达式编译为Pattern对象。
(2)matches(String regex, CharSequence input):用指定的正则表达式匹配输入的字符串。
(3)split(CharSequence input):按照指定的正则表达式将输入的字符串分割成字符串数组。
(4)pattern():返回当前Pattern对象表示的正则表达式模式字符串。
Matcher类方法
(1)matches():判断当前Matcher对象的输入字符串是否完全匹配正则表达式。
(2)find():在当前Matcher对象的输入字符串中查找下一个匹配的子串。
(3)group():返回当前Matcher对象的输入字符串中与上一次find()方法匹配的子串。
(4)start():返回当前Matcher对象的输入字符串中与上一次find()方法匹配的子串的起始位置。
(5)end():返回当前Matcher对象的输入字符串中与上一次find()方法匹配的子串的结束位置。
三、Java正则表达式示例
下面是一些Java正则表达式的示例:
匹配手机号码
String regex = "^1[3-9]\d{9}$"; String phoneNum = "18812345678"; boolean isMatch = Pattern.matches(regex, phoneNum);
匹配邮箱地址
String regex = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$"; String email = "test@example.com"; boolean isMatch = Pattern.matches(regex, email);
匹配身份证号码
String regex = "^\d{17}[0-9Xx]$"; String idCardNum = "420821199001011234"; boolean isMatch = Pattern.matches(regex, idCardNum);
提取URL中的参数
String url = "http://example.com/?id=123&name=张三"; Pattern pattern = Pattern.compile("(?<=\?|&)\w+=[^&]+"); Matcher matcher = pattern.matcher(url); while (matcher.find()) { System.out.println(matcher.group()); }
以上是Java正则表达式的简单示例,通过学习正则表达式的语法和API,可以更加灵活地运用正则表达式解决实际问题。
-
java正则表达式
腾讯云 2023-04-05
-
夕颜卡盟官网_夕颜卡盟平台 当前滚动
互联网 2023-04-05
-
天天亮点!普尔连续得分,库里随后拿球后不攻,主动掩护示意普尔:你继续打
诗话篮球 2023-04-05
-
分享一波最想收到的 感谢别人送礼物的话
趣礼物 2023-04-05
-
凯尔特人与76人赛后评述:细说绿军犯的一些错误
天下足球最新帖子 2023-04-05
-
今日热讯:历史机遇期来临 工业机器人热点正由“硬”转“软”
云掌财经GPLP犀牛财经 2023-04-05
-
天天最新:这台舞剧《长恨歌》,凭何吸引观众冒雨观看?
中国新闻网 2023-04-05
-
环球实时:360回应周鸿祎与胡欢离婚:私人关系调整
中国物联网 2023-04-05
-
天天看点:育好良种 守好黑土——“辽北粮仓”春耕备耕见闻
新华网 2023-04-05
-
奥萨苏纳总比分2-1淘汰毕包,时隔18年再度杀入国王杯决赛_环球信息
Jaden 2023-04-05
-
java正则表达式
腾讯云 2023-04-05
-
夕颜卡盟官网_夕颜卡盟平台 当前滚动
互联网 2023-04-05
-
天天亮点!普尔连续得分,库里随后拿球后不攻,主动掩护示意普尔:你继续打
诗话篮球 2023-04-05
-
分享一波最想收到的 感谢别人送礼物的话
趣礼物 2023-04-05
-
凯尔特人与76人赛后评述:细说绿军犯的一些错误
天下足球最新帖子 2023-04-05
-
今日热讯:历史机遇期来临 工业机器人热点正由“硬”转“软”
云掌财经GPLP犀牛财经 2023-04-05
-
天天最新:这台舞剧《长恨歌》,凭何吸引观众冒雨观看?
中国新闻网 2023-04-05
-
环球实时:360回应周鸿祎与胡欢离婚:私人关系调整
中国物联网 2023-04-05
-
天天看点:育好良种 守好黑土——“辽北粮仓”春耕备耕见闻
新华网 2023-04-05
-
奥萨苏纳总比分2-1淘汰毕包,时隔18年再度杀入国王杯决赛_环球信息
Jaden 2023-04-05
-
环球热头条丨汇通达网络(09878.HK):4月4日南向资金减持2.1万股
证券之星 2023-04-05
-
A股减持公告集合丨三安光电:大基金拟减持不超1%股份
格隆汇 2023-04-05
-
天天快资讯丨捷尼赛思GV80 Coupe概念车全球首秀,独特设计理念焕发生机
爱卡汽车网 2023-04-04
-
东方精工:4月3日公司高管谢威炜减持公司股份合计13.5万股
证券之星 2023-04-04
-
热门:东方电热:预计2023年1-3月盈利,净利润同比增0.42%至29.85%
证券之星 2023-04-04
-
环球微速讯:新鸿基公司4月4日回购5000.00股 耗资1.50万港币
同花顺金融研究中心 2023-04-04
-
加速战!新疆苏宁物流基地实现“次日达”
中新网新疆 2023-04-04
-
看点:含意 含义 涵义的区别(含义和涵义的区别)
互联网 2023-04-04
-
环球新动态:新疆喀什550万亩棉花开播 机械化播种率达100%
中国新闻网客户端 2023-04-04
-
环球快看点丨武汉豪宅“半壁江山”在华润置地
光华楼评 2023-04-04
-
视焦点讯!白云广雅初中学校怎么样_白云广雅中学官网
科学教育网 2023-04-04
-
女武神知道自己冤枉了舰长后会怎样3
哔哩哔哩 2023-04-04
-
环球讯息:森林狼主场105比107不敌开拓者遭遇三连败
互联网 2023-04-04
-
客服“回怼”辱骂反被开除?一直闹到省高院......
中国青年报官微 2023-04-04
-
血液肿瘤新药在华上市
人民网-人民日报海外版 2023-04-04
-
每日热文:参保人次近3亿 累计保费320亿 “惠民保”能火多久
第一财经 2023-04-04
-
环球热头条丨普鲁仕网线是不是西门子-怎么看网线是不是千兆
互联网 2023-04-04
-
竞技交流 收获成长
人民网-人民日报 2023-04-04
-
华泰证券:国内大储利润上涨弹性充足 后续估值及业绩均有提升空间
证券时报·e公司 2023-04-04
-
BOE(京东方)强势亮相ICDT 2023 创新科技引领显示行业新未来
京东方A官微 2023-04-04