正则表达式入门(一)常用元字符

常用元字符

  • 例子: hi, what are you doing? candy?

\b 匹配单词的开始处或结尾处

如何正确的匹配hi?我们可以使用\bhi来匹配,但是如果要匹配的单词是: him,high,hidden等单词,那么使用\bhi就不能精确匹配出hi,所以我们可以使用\bhi\b该方式精确匹配出hi,该正则表达式理解为,匹配以h开始并且以i结束的词。

. 匹配除了换行符以外的任意字符

上面的列子精确的匹配了hi,但是现在又新增一个需求,想要匹配hi以及后面的candy。于是想到了使用\bhi\b.\bcandy\b来匹配,但是该语法有个限制,只能匹配一个字符,比如只能匹配hi,candy、hi1candy这种类似的字符,但无法匹配hi, what are you doing? candy?这样的字符,匹配的数量有限制。

<span id="jump"></span>

为了解决.只能一个任意字符的问题,我们可以将*.联合使用,写出这样的表达式\bhi\b.*\bcandy\b,该表达式语义为: 匹配以h开头i结尾且中间为除换行符以外的任意字符,且可连续匹配该字符任意次,之后以cand开始以y结束的内容。

\d 匹配数字

现在我们有一个需求,要求匹配以15开头的手机号,如:15XXXXXXXXX 我们可以使用\d写出15\d\d\d\d\d\d\d\d\d这样的表达式。但是这样写比较麻烦;我们可以改成这样: 15\d{9},该表达式表示: 匹配15之后的任意9个数字。

^匹配字符串的开始处,$ 匹配字符串的结束处。

上面的例子虽然可以匹配15开头的手机号,但是如果我们输入as15111111111sd这样的也能被匹配到,是因为我们没有做限制,现在我们就对上面的表达式改进为: ^15\d{9}$

解除元字符限制

当我们想使用元字符本身的时候,可以使用\对元字符进行转义,比如我相匹配www.baidu.com,我们可以使用www\.baidu\.com进行转义匹配,此外还比如匹配计算机盘符:D:\\User对应的是D:\User。其他元字符也是如此: 比如使用*可以换成\*

限定符

* 前面的内容可以连续重复0次或任意次数,最终使得整个表达式得以匹配

上面已经有例子讲过的例子: 用*进行匹配

+ 前面的内容可以连续重复至少1次或任意次数,最终使得整个表达式得以匹配

使用hi, what are you doing? candy?的例子,我们要匹配包含hi开始,并以candy结束的单词。可以这样写: ^\bhi\b.+\bcandy\b$。该表达式可以匹配hi, what are you doing? candy?这样的词组,但是无法匹配hicandy这样的词组。因为+的规则是至少是匹配重复的1次。 如果要匹配数字呢?比如匹配15开头的数据,可以这样写:15\d+

猜你喜欢

转载自my.oschina.net/u/3152087/blog/1796695