前言
先说点别的。一般来说,听到一个计算机科学的名词的中文,可能猜不到这是什么,但是听到英文就很好理解了。
正则表达式(regular expression)这个概念,是少数的,我听了英文以后还猜不知道是什么的概念之一。
正则表达式,又称规则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
linux 中支持用正则表达式检索文本的有 sed 和 grep,Python 中有 re 模块,JavaScript 中有 RegExp 对象和 String.match() 等方法。
教程:正则表达式30分钟入门教程
正则表达式手册
转载:正则表达式手册
下面是表中常用的表达式:
匹配位置
这类字符匹配位置,不匹配字符。
^$:匹配开始和结束\b:匹配单词边界\B:匹配非单词边界(大写为取反,爱了爱了)
匹配多个字符
{n}:匹配确定的 n 次{n,}:至少匹配 n 次{n,m}:匹配至少 n 次,至多 m 次*:等价于{0,}+:等价于{1,}?:等价于{0,1}
上述表达式均为贪婪模式(匹配最多的字符);在表达式后增加 ? (如 {n,m}?)为非贪婪模式(匹配最少的字符)。
匹配字符
.:匹配除\n的单个字符x|y:匹配x或y单个字符[xyz](字符集合):匹配所包含的任意一个字符,等价于x|y|z[xyz](负值字符集合):匹配未包含的任意字符[a-z](字符范围):匹配指定范围内的任意字符[^a-z](负值字符范围):匹配任何不在指定范围内的任意字符
匹配字符(转义)
\cx:匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为[A-Za-z]之一\d:匹配一个数字字符。等价于[0-9]\D:匹配一个非数字字符。等价于[^0-9]\f\n\r\t\v:匹配一个换页符、换行符、回车符、制表符、垂直制表符\s:匹配任何空白字符,等价于[ \f\n\r\t\v](注意有一个空格)\S:匹配上一行以外的字符。等价于[^ \f\n\r\t\v]\w:匹配包括下划线的任何单词字符。等价于[A-Za-z0-9_]\W:匹配上一行以外的字符\num:匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,(.)\1匹配两个连续的相同字符。
彩蛋:匹配网址的正则表达式
1 | ( regexpTaobao = regexp.MustCompile(`¥([\w\s]+)¥`) regexpURL = regexp.MustCompile(`(?:http|https|www)(?:[\s\.:\/\/]{1,})([\w%+:\s\/\.?=]{1,})`) regexpWhitelist = regexp.MustCompile(`((acg|im9|bili|gov).*(com|html|cn|tv)|(av\d{8,}|AV\d{8,}))`) regexpQQ = regexp.MustCompile(`(?:[加qQ企鹅号码\s]{2,}|[群号]{1,})(?:[\x{4e00}-\x{9eff}]*)(?:[:,:]?)([\d\s]{6,})`) regexpWechat = regexp.MustCompile(`(?:[加+微++➕薇?vV威卫星♥❤姓xX信]{2,}|weixin|weix)(?:[,❤️.\s]?)(?:[\x{4e00}-\x{9eff}]?)(?:[:,:]?)([\w\s]{6,})`) ) |