正则表达式教程之匹配单个字符详解
本⽂实例讲述了正则表达式教程之匹配单个字符。分享给⼤家供⼤家参考,具体如下:
注:在所有例⼦中正则表达式匹配结果包含在源⽂本中的【和】之间,有的例⼦会使⽤Java来实现,如果是java本⾝正则表达式的⽤法,会在相应的地⽅说明。所有java例⼦都在JDK1.6.0_13下测试通过。
java测试代码:
/**
* 根据正则表达式和要匹配的源⽂本,输出匹配结果
* @param regex 正则表达式
* @param sourceText 要匹配的源⽂本
*/
public static void matchAndPrint(String regex, String sourceText){
Pattern pattern = Patternpile(regex);
Matcher matcher = pattern.matcher(sourceText);
while(matcher.find()){
System.out.up());
}
}
⼀、匹配纯⽂本
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 = Patternpile(regex, Pattern.CASE_INSENSITIVE);
⼆、匹配任意字符
前⾯见到的正则表达式都是静态的纯⽂本,它们根本体现不出正则表达式的威⼒。下⾯,来看看如何使⽤正则表达式来匹配不可预知的字符。
在正则表达式中,特殊字符(或字符集合)⽤来给出要搜索的东西。.字符(英⽂状态句号)可以匹配任何⼀个单个字符。相当于DOS中的?字符和SQL中的_(下划线)字符。如:正则表达式c.t将匹配cat、cut、cot等等。下⾯来看⼀个例⼦。
⽂本:
<
<
<
<
<
<
<
正则表达式:sales.
结果:
<
<
【sales1】.txt
【salesA】.txt
<
【sales2】.txt
【sales.】txt
分析:正则表达式sales.将把由字符串sales和另外⼀个字条构成的⽂件名出来,从结果可以看出,.可以匹配字母、数字以及它本⾝。7个⽂件中有4个与这个模式匹配。
如果调⽤matchAndPrint⽅法,输出结果是:
sales1
salesA
sales2
sales.
三、匹配特殊字符
.字符在正则表达式中有着特殊的含义。如果模式⾥需要⼀个.,就要想办法来告诉正则表达式你需要的是.字符本⾝⽽不是它在正则表达式中的特殊含义。为此,必须在.前⾯加上\字符来对它进⾏转义。\也是⼀个元字符(metacharacter,表⽰这个字符有特殊含义,⽽不是字符含义本⾝)。来看下⾯这个例⼦。
出na或sa开头的⽂件,不管它后⾯跟的是⼀个什么数字。
⽂本:
<
<
<
<
<
正则表达式:.a..txt
结果:
【sal】es.txt
【na1】.txt
【na2】.txt
【sa1】.txt
【sanatxt】.txt
分析:这个正则把、、出来了,但是还到了2个意料之外的结果。因为.a..txt这个正则中的.字符将与任意⼀个字符匹配。要想匹配.字符本⾝,那么需要使⽤\转义。把正则修改成.a.\.txt,则能够满⾜我们的需求。
注意:如果使⽤java,那么.a.\.txt这个正则表达式应该写成.a.\\.txt,因为\在java语⾔中也是⼀个转义字符。
四、总结
正则表达式通常简称为模式,它们其实是⼀些字符构成的字符串。这些字符可以是普通字符(纯⽂本)或元字符(有特殊含义的特殊字符)。这⾥介绍了如何使⽤普通字符和元字符去匹配单位字符。.可以匹配任何字符。\⽤来对字符进⾏转
义。在正则表达式中,有特殊含义的字符序列总是以\字符开头。在接下来的⽂章中,我们将介绍如何匹配⼀组⼀组字符。
PS:这⾥再为⼤家提供2款⾮常⽅便的正则表达式⼯具供⼤家参考使⽤:
希望本⽂所述对⼤家正则表达式学习有所帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论