💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC=3,3] * * * * * ### 1. 测试工具 我们将使用`RegxTestor`这款工具来调试正则表达式 * * * * * ### 2. 元字符 元字符用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。 常用元字符如下: | 元字符 | 描述 | | -- | -- | | . | 匹配除换行符以外的任意字符 | | \w | 匹配字母或数字或下划线或汉字 | | \s | 匹配任意空白字符 | | \d | 匹配数字 | | \b | 表示单词的开始或结束| | ^ | 匹配字符串的开始 | | $ | 匹配字符串的结束 | | - | 表示范围 | | [] | 匹配括号中的任意一个字符 | | *,+,? | 量词 | | {} | 量词,如`\d{5,11}`,表示5-11个数字| * * * * * ### 3. 字符组 ·[]`匹配单个字符,尽管看起来有好多字符 `[aeiou]` 匹配其中一个英文字母 `[.?!]` 匹配其中一个标点符号 `c[aou]t` 匹配“cat”,“cot”,“cut”这三个单词 **注意:字符组中的元字符是不需要转义的** * * * * * ### 4. 转义 php中使用反斜杠(\)表示转义,\Q和\E也可以在模式中忽略正则表达式中的元字符: `\d+\Q.$.\E$` 以上表达式先匹配一个或多个数字,紧接着一个点号,然后一个$,再然后一个点号,最后是字符串末尾。 也就是说,\Q和\E之间的元字符都会作为普通字符用来匹配。 * * * * * ### 5. 分组 重复单个字符只需要在字符后面加上量词,但如果想重复多个字符又该怎么办呢?可以用小括号指定子表达式,然后规定这个子表达式的重复次数,也可以对子表达式进行其他一些操作。 简单匹配IP地址的表达式如下: >`(\d{1,3}\.){3}\d{1,3}` >要理解以上表达式,应按下列顺序分析: 1)匹配1-3位数字; `\d{1,3}` 2) 匹配3位数字加上1个英文句号(分组),重复3次(最后加上一个1~3位的数字): `(\d{1,3}\.){3}\d{3}` 事实上,IP地址的每个数字都不能大于255,所以严格来说这个正则表达式是有问题的。 `^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$` 这个正则表达式应该就是匹配IP地址的最终版本。