正则表达式 知识量:10 - 22 - 55
\w的含义是匹配任意一个字母数字或下划线字符,但是很多时候,我们并不知道要匹配的字符串究竟包含几个字符,只匹配单个字符显然不能满足要求。这时,我们可以使用几个特殊的元字符实现匹配多个字符的目的。
元字符“+”表示匹配至少一个,即匹配一个或多个,不包括0个。
示例文本,匹配下文中的电子邮箱地址:
The abc@163.com and news.bbc@126.com are my email. I also use support.aol@com.cn as my favorite email.
正则表达式:
[\w.]+@[\w.]+\.\w+
结果:
Match | Position | Length |
---|---|---|
abc@163.com | 4 | 11 |
news.bbc@126.com | 20 | 16 |
support.aol@com.cn | 62 | 18 |
在以上正则表达式中:
[\w.]表示匹配任意一个字母数字下划线和“.”。在字符集合中,“.”是不必进行转义的(转义也是可以的);在字符集合外部,则必须进行转义才能表示“点”的意思。
[\w.]+表示匹配至少一个字母数字下划线和“.”。
匹配字符集合中的至少一个,“.”必须放到[]的后面。
如果要匹配的字符可以是多个,也可以是零个,那么可以使用元字符“*”。
“*”的用法与“+”完全一致,区别只是“*”允许匹配的字符不出现;“+”则要求匹配的字符至少出现一次。
示例文本,匹配正确的电子邮箱地址:
The .abc@163.com and .news.bbc@126.com are my email. I also use .support.aol@com.cn as my favorite email.
正则表达式:
\w+[\w.]*@[\w.]+\.\w+
结果:
Match | Position | Length |
---|---|---|
abc@163.com | 5 | 11 |
news.bbc@126.com | 22 | 16 |
support.aol@com.cn | 65 | 18 |
以上文本中,错误的书写了邮箱地址,即邮箱的前面错加了一个“.”,如果使用上节的正则表达式,会将带“.”的地址一同匹配,而合法的邮箱地址是不允许这样的。通过使用元字符“*”修改正则表达式,就可以得到正确的匹配了。
正则表达式中,开头的\w+用于确保邮箱的第一个字符是字母数字或下划线,其后的[\w.]*则表示任意个可有可无的字母数字下划线或“.”。
要匹配零个或一个字符应该使用元字符“?”,也就是说匹配的字符要么不出现,要么只出现一次。
示例文本,匹配URL地址:
Please remember http://www.163.com and https://www.baidu.com.
正则表达式:
https?://[\w.]+
结果:
Match | Position | Length |
---|---|---|
http://www.163.com | 16 | 18 |
https://www.baidu.com. | 39 | 22 |
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6