视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
用正则匹配单个字符的详细解析
2020-11-27 19:57:44 责编:小采
文档


这次给大家带来用正则匹配单个字符的详细解析,用正则匹配单个字符的注意事项有哪些,下面就是实战案例,一起来看一下。

本文实例讲述了正则表达式教程之匹配单个字符。分享给大家供大家参考,具体如下:

注:在所有例子中正则表达式匹配结果包含在源文本中的【和】之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明。所有java例子都在JDK1.6.0_13下测试通过。

java测试代码:

/**
 * 根据正则表达式和要匹配的源文本,
输出匹配结果 * @param regex 正则表达式 * @param sourceText 要匹配的源文本 */ public static void matchAndPrint(String regex, String sourceText){ Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(sourceText); while(matcher.find()){ System.out.println(matcher.group()); } }

一、匹配纯文本

1、只有一个匹配结果

首先来看一个简单的正则表达式,today,虽然它本身是纯文本,但它是一个正则表达式。来看一个例子:

源文本:Yesterday is history,tomorrow is a mystery, but today is a gift.

正则表达式:today

结果:Yesterday is history,tomorrow is a mystery, but 【today】 is a gift.

分析:这里使用的正则表达式是纯文本,它匹配了源文本中的today。

调用matchAndPrint方法,输出结果是:

today

2、有多个匹配结果

源文本:Yesterday is history,tomorrow is a mystery, but today is a gift.

正则表达式:is

结果:Yesterday is history,tomorrow is a mystery, but 【today】 is a gift.

分析:在源文本中,有三个is,但输出了四个is,因为history中的is也会被匹配到。

调用matchAndPrint方法,输出结果是:

is

is

is

is

3、字母大小写问题

正则表达式是区分字母大小写的,但很多正则表达式的实现中也支持不区分大小写的匹配操作。在JavaScript中,使用i标志来执行一次不区分字母大小写的匹配。在java中,如果要不区分大小写,那么在编译正则表达式时,可以指定:

Patternpattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);

二、匹配任意字符

前面见到的正则表达式都是静态的纯文本,它们根本体现不出正则表达式的威力。下面,来看看如何使用正则表达式来匹配不可预知的字符。

在正则表达式中,特殊字符(或字符集合)用来给出要搜索的东西。.字符(英文状态句号)可以匹配任何一个单个字符。相当于DOS中的?字符和SQL中的_(下划线)字符。如:正则表达式c.t将匹配cat、cut、cot等等。下面来看一个例子。

文本:

orders1.txt

orders2.txt

sales1.txt

salesA.txt

orders3.txt

sales2.txt

sales.txt

正则表达式:sales.

结果:

orders1.txt

orders2.txt

【sales1】.txt

【salesA】.txt

orders3.txt

【sales2】.txt

【sales.】txt

分析:正则表达式sales.将把由字符串sales和另外一个字条构成的文件名找出来,从结果可以看出,.可以匹配字母、数字以及它本身。7个文件中有4个与这个模式匹配。

如果调用matchAndPrint方法,输出结果是:

sales1

salesA

sales2

sales.

三、匹配特殊字符

.字符在正则表达式中有着特殊的含义。如果模式里需要一个.,就要想办法来告诉正则表达式你需要的是.字符本身而不是它在正则表达式中的特殊含义。为此,必须在.前面加上\字符来对它进行转义。\也是一个元字符(metacharacter,表示这个字符有特殊含义,而不是字符含义本身)。来看下面这个例子。

找出na或sa开头的文件,不管它后面跟的是一个什么数字。

文本:

sales.txt

na1.txt

na2.txt

sa1.txt

sanatxt.txt

正则表达式:.a..txt

结果:

【sal】es.txt

【na1】.txt

【na2】.txt

【sa1】.txt

【sanatxt】.txt

分析:这个正则把na1.txt、na2.txt、sa1.txt找出来了,但是还找到了2个意料之外的结果。因为.a..txt这个正则中的.字符将与任意一个字符匹配。要想匹配.字符本身,那么需要使用\转义。把正则修改成.a.\.txt,则能够满足我们的需求。

注意:如果使用java,那么.a.\.txt这个正则表达式应该写成.a.\\.txt,因为\在java语言中也是一个转义字符。

四、总结

正则表达式通常简称为模式,它们其实是一些字符构成的字符串。这些字符可以是普通字符(纯文本)或元字符(有特殊含义的特殊字符)。这里介绍了如何使用普通字符和元字符去匹配单位字符。.可以匹配任何字符。\用来对字符进行转义。在正则表达式中,有特殊含义的字符序列总是以\字符开头。

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

用php与js实现正则匹配数字和字母组合的密码

在JQ中正则验证不能含有中文的方法

下载本文
显示全文
专题