正则表达式入门
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为 “元字符” )。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
正则表达式是繁琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。
简单讲
这学期在学习 C++11 的时候用到了正则表达式,很直观的体验是正则表达式能帮助自己提升效率,可以少些很多代码,十分简单与高效。
正则表达式的教程可以完全参考 菜鸟教程 上的内容,虽然那里知识点写得有些混乱,但是还是比较容易学习的。这里就不再重复整理了,只列出有些没有涉及的以及经常要用到的知识点。
()标记一个子表达式的开始和结束位置。*匹配前面的子表达式零次或多次。+匹配前面的子表达式一次或多次。?匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。.匹配除换行符\n之外的任何单字符。{n}n 是一个非负整数。匹配确定的 n 次。[xyz]字符集合。匹配所包含的任意一个字符。\b匹配一个单词边界,即字与空格间的位置。\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。\d匹配一个数字字符。等价于[0-9]。\w匹配字母、数字、下划线。等价于[A-Za-z0-9_]。
补充
(?i)表示所在位置右侧的表达式开启忽略大小写模式。(?s)表示所在位置右侧的表达式开启单行模式。(?m)表示所在位置右侧的表示式开启指定多行模式。
举例
/\b([a-z]+) \1\b/gi一个单词连续出现的位置。\1则是代表与第一个小括号中要匹配的内容相同。g代表全局搜索。i代表大小写不敏感。/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/将一个 URL 解析为协议、域、端口及相对路径。/^\s*$/匹配空行。/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/匹配 HTML 标记。/^[a-z0-9](\w|\.|-)*@([a-z0-9]+-?[a-z0-9]+\.){1,3}[a-z]{2,4}$/i检测邮箱地址正确性。/^[\u4e00-\u9fa5A-Za-z0-9-_]*$/用户名检测,只允许包含中英文、数字、下划线和横杠。/(?=.*[a-z])(?=.*\d)(?=.*[#@!~%^&*])[a-z\d#@!~%^&*]{8,16}/i密码检验,只允许包含数字字母和特殊符号,长度在 8-16 位之间。