正则表达式(一)

本文介绍了正则表达式的基础知识,包括如何描述字符串匹配模式,以及在Java中使用正则表达式进行匹配。文章详细讲解了字符类、逻辑操作符和边界匹配符,并探讨了量词的三种类型:贪婪型、勉强型和占有型,解释了它们在匹配过程中的行为。通过实例展示了如何构建和运用正则表达式解决文本处理问题。
摘要由CSDN通过智能技术生成


前言

正则表达式是一种强大而灵活的文本处理工具。提供了一种完全通用的方式,能够解决各种字符处理相关的问题:匹配、选择、编辑及验证


一、基础

        正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。

        使用正则表达式,我们能够以编程的方式,构造复杂的文本模式,并对输入的字符串进行搜索。例如:要描述一个整数,它可能有以为或多位数字,在正则表达式中,可以用 \d 表示一位数字。
        应用正则表达式的最简单的方法,就是利用String类内建的功能。例如可以检查一个String是否匹配指定的正则表达式:
代码如下:

public class IntergerMatch{
	public static void main(String[] args){
		System.out.println("abc".matcher("[a-z]+"));
		System.out.println("123".matcher("-?\\d+"));
		System.out.println("-123".matcher("-?\\d+"));
		System.out.println("+123".matcher("(-|\\+)?\\d+"));
	}
}

        在Java中,\\的意思是“我要插入一个正则表达式的反斜线,所以其后的字符具有特殊意义。”例如,如果你想表示一位数字,那么正则表达式应该是\\d。如果你想插入一个普通的反斜线,则应该是\\\\。

二、创建正则表达式

        正则表达式的完整构造子列表,请参考JDK文档java.util.regex包中的Pattern类。

字符类
.任意字符
[abc]包含a、b和c的任何字符(与a
[^abc]除了a、b和c的任何字符
[a-zA-Z]从a到z或从A到Z的任何字符
\s空白符(空格、tab、换行、换页和回车)
\S非空白符([^\s])
\d数字[0-9]
\D非数字[^0-9]
\w词字符[a-zA-Z0-9]
\W非词字符
逻辑操作符
XYY跟在X后面
X|YX或Y
(X)捕获组。可以在表达式中用\i引用第i个捕获组
边界匹配符
^一行的起始
$
\b词的边界
\B非词的边界
\G钱一个匹配的结束

三、量词

量词描述了一个模式吸收输入文本的方式:

  • 贪婪型:量词总是贪婪的,除非有其他的选项被设置。贪婪表达式会为所有可能的模式发现尽可能多的匹配。
  • 勉强型:用问号来指定,这个量词匹配满足模式所需的最少字符。因此也称作懒惰的、最少匹配的、非贪婪的、或不贪婪的。
  • 占有型:目前,这种类型的量词只在Java中才可用,并且也更高级。
贪婪型勉强型占有型如何匹配
X?X??X?+一个或零个X
X*X*?X*+零个或多个X
X+X+?X++一个或多个X
X{n}X{n}?X{n}+恰好n次X
X{n,}X{n,}?X{n,}+至少n次X
X{n,m}X{n,m}?X{n,m}+X至少n次,且不超过m次

注意:表达式X通常必须要用括号括起来,以便它能够按照我们所期望的效果去执行。例如:abc+,如果不括起来,这个表达式表示的是:匹配ab,后面跟随一个或多个c。要表明匹配一个或多个完整的abc字符串,则要这样表示:[abc]+。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值