正则表达式教程之匹配单个字符详解
本文实例讲述了正则表达式教程之匹配单个字符。分享给大家供大家参考,具体如下
注在所有例子中正则表达式匹配结果包含在源文本中的【和】之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明。所有java例子都在JDK1.6.0_13下测试通过。
java测试代码
/ 根据正则表达式和要匹配的源文本,输出匹配结果 @param regex 正则表达式 @param sourceText 要匹配的源文本 / public static void matchAndPrint(String regex, String sourceText){ Pattern pattern = Pattern.pile(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.pile(regex, Pattern.CASE_INSENSITIVE);
二、匹配任意字符
前面见到的正则表达式都是静态的纯文本,它们根本体现不出正则表达式的威力。狼蚁网站SEO优化,来看看如何使用正则表达式来匹配不可预知的字符。
在正则表达式中,特殊字符(或字符集合)用来给出要搜索的东西。.字符(英文状态句号)可以匹配任何一个单个字符。相当于DOS中的?字符和SQL中的_(下划线)字符。如正则表达式c.t将匹配cat、cut、cot等等。狼蚁网站SEO优化来看一个例子。
文本
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,表示这个字符有特殊含义,而不是字符含义本身)。来看狼蚁网站SEO优化这个例子。
找出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语言中也是一个转义字符。
四、
正则表达式通常简称为模式,它们其实是一些字符构成的字符串。这些字符可以是普通字符(纯文本)或元字符(有特殊含义的特殊字符)。这里介绍了如何使用普通字符和元字符去匹配单位字符。.可以匹配任何字符。\用来对字符进行转义。在正则表达式中,有特殊含义的字符序列总是以\字符开头。在接下来的文章中,我们将介绍如何匹配一组一组字符。
PS这里再为大家提供2款非常方便的正则表达式工具供大家参考使用
JavaScript正则表达式在线测试工具
正则表达式在线生成工具
希望本文所述对大家正则表达式学习有所帮助。
编程语言
- 宿迁百度关键词排名指南:实现精准营销的关键
- 四川SEO优化怎么做网络推广
- 立昂技术备案老域名收购:如何为您的业务赋能
- 安徽百度关键词seo贵不贵,一般需要多少钱
- 吉林百度快照排名怎么做电话营销
- 多伦新手做SEO怎么做
- 甘肃优化关键词排名推广怎么做论坛营销
- 沙雅SEO网站推广:提升您的在线可见性
- 四川SEO优化如何提升销售额和销售量
- 聂荣网站排名优化:提升网站可见性的全方位指
- 涞水SEO:提升地方企业在线可见性的策略
- 辽宁百度seo排名怎样做网站排名
- 临湘哪有关键词排名优化:提升网站可见度的关
- 黑龙江百度网站优化有没有优惠
- 凉城优化关键词排名推广:提升您的网络可见性
- 萝北整站优化:提升您网站流量和排名的全面指