正则表达式
正则表达式学习记录
正则表达式(Regular Expression)是一种用于匹配字符串的特殊文本模式。它由普通字符和特殊字符(称为元字符)组成,可以用来验证、提取或替换文本。
正则表达式的语法
正则表达式是一种用于匹配字符串的工具,它由普通字符和特殊字符(称为元字符)组成,可以用来验证、提取或替换文本。
普通字符
一个普通字符代表它本身。例如,a 表示字母 a,1 表示数字 1。除了部分特殊字符外,正则表达式中的大多数字符都是普通字符。
元字符
元字符是具有特殊含义的字符,用于匹配多个字符或一类字符。下面是常见的元字符及其含义:
.(句点):匹配任意单个字符,除了换行符\n。*:匹配前面的字符零次或多次。例如,a*可以匹配空字符串、a、aa、aaa等等。+:匹配前面的字符至少一次。例如,a+可以匹配a、aa、aaa等等。?:匹配前面的字符零次或一次。例如,a?可以匹配空字符串或a。{n}:匹配前面的字符恰好出现 n 次。例如,a{3}可以匹配aaa。{n,}:匹配前面的字符至少出现 n 次。例如,a{3,}可以匹配aaa、aaaa、aaaaa等等。{n,m}:匹配前面的字符至少出现 n 次,但不超过 m 次。例如,a{2,4}可以匹配aa、aaa、aaaa。[]:匹配一类字符。方括号内可以列举出多个字符,表示只要匹配其中的任何一个字符即可。例如,[abc]可以匹配 字母a、b或c。[^]:表示不匹配方括号中的任何一个字符。例如,[^abc]表示匹配除字母a、b、c以外的任何字符。
特殊字符
下面是一些具有特殊含义的字符:
^:匹配字符串的开头,在方括号内表示取反。例如,^a表示匹配以字母a开头的字符串,[^a]表示匹配不含字母a的字符串。- 表示匹配以字母
a结尾的字符串。 \:转义字符,用于将特殊字符转换为普通字符。例如,\.表示匹配句点.,而不是任意单个字符。
模式修饰符
模式修饰符是可选标志,用于改变匹配模式的行为。常见的模式修饰符包括:
i:大小写不敏感。例如,/hello/i可以匹配Hello、HELLO或hello。m:多行模式。在多行模式下,^和$分别匹配一行的开头和结尾,而不是整个字符串的开头和结尾。s:单行模式。在单行模式下,.包括换行符\n在内匹配任意单个字符。g:全局模式。在全局模式下,会匹配字符串中的所有符合条件的子串,而不只是第一个。x:忽略空格。在忽略空格模式下,可以在正则表达式中使用空格和换行符,使其更易读。
分组
分组用于将多个元素组合在一起,并为这些元素指定共同的量词或其它操作。
():表示分组。例如,(abc)+可以匹配连续出现的abc,例如abc、abcabc等等。(?:):非捕获型分组。与普通分组类似,但不会被记入捕获组,也就是说,不能在后续的正则表达式中引用它。例如,(?:abc)+可以匹配连续出现的abc,但无法从匹配结果中提取这些abc。
常用正则表达式
以下是一些常见的正则表达式及其应用场景:
- 匹配电子邮件地址:
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$。这个正则表达式可以匹配大部分常见的电子邮件地址。 - 匹配 URL:
^(http|https)://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$。这个正则表达式可以匹配绝大多数网站的 URL。 - 匹配日期格式:
^\d{4}-\d{1,2}-\d{1,2}$。这个正则表达式可以匹配 yyyy-MM-dd 格式的日期。 - 匹配手机号码:
^1[3456789]\d{9}$。这个正则表达式可以匹配中国大陆的手机号码。 - 匹配身份证号码:
^\d{17}(\d|X|x)$。这个正则表达式可以匹配大陆居民身份证号码。 - 匹配 IP 地址:
\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b。这个正则表达式可以匹配IPv4地址。 - 匹配 HTML 标签:
<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)。这个正则表达式可以匹配HTML标签以及其中的内容。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 The Coding Odyssey | Chronicles of a Software Developer!






