正则表达式的基本语法

35 阅读1分钟

正则表达式是用于匹配和处理文本的强大工具。

元字符名称功能说明
.点号匹配除换行符外的任意单个字符。
\d数字字符匹配任意一个数字(等价于 [0-9])。
\w单词字符匹配字母、数字、下划线。
\s空白字符匹配空格、制表符、换行符等空白符。
\b单词边界匹配单词的开始或结束位置,不消耗字符。
^脱字符匹配字符串的开始位置(或多行模式下的行首)。
$美元符匹配字符串的结束位置(或多行模式下的行尾)。
*星号匹配前面的元素零次或多次(贪婪匹配)。
+加号匹配前面的元素一次或多次(贪婪匹配)。
?问号1. 匹配前面的元素零次或一次。
2. 紧跟在量词(*+?{n,m})之后时,转换为非贪婪模式。
{n,m}区间量词匹配前面的元素至少 n次,至多 m次。
[abc]字符组匹配方括号内的任意一个字符(例如,匹配 a 或 b 或 c)。
[^abc]排除型字符组匹配不在方括号内的任意一个字符。
**`ab`**选择符
( ... )捕获分组1. 将多个元素视为一个整体。
2. 提取匹配的内容以备后续使用。

1. 转义字符

元字符在正则表达式中具有特殊含义。如果你需要匹配它们本身(比如匹配一个真实的点号.或问号?或者美元符号$),需要在前面加上反斜杠 \ 进行转义。

例如,要匹配字符串 "index.html" ,应使用正则表达式 "index\.html"
例如,要匹配字符串 "${token}" ,应使用正则表达式 "\${token}"

2. 贪婪模式与非贪婪模式

量词*+?{n,m})默认是贪婪的,它们会匹配尽可能长的字符串。

例如,用 .或者*去匹配 "abc"def",它会匹配到整个字符串。

量词 后面加上一个?,就变为非贪婪(或懒惰)模式,匹配尽可能短的字符串。

例如,用 .*?进行去匹配 "abc"def",它会在遇到第一个 "时就结束匹配,只匹配 "abc"部分

使用

  1. 匹配手机号码

匹配以1开头的11位数字,通常第二位是3、4、5、7、8、9:^1[3-9]\d{9}$

  1. 匹配电子邮件地址

一个相对简单的邮箱匹配规则:用户名由单词字符组成,后接@,然后是网址和域名。^\w+@[a-zA-Z0-9]+(.[A-Za-z]{2,4}){1,2}$

  1. 提取HTML标签中的内容

假设有字符串 "<title>Hello, World!</title>",想提取标签内的内容 "Hello, World!"。可以使用非贪婪匹配:<title>(.*?)</title>。这里使用 .*?可以防止匹配到超过第一个 </title>的内容。

练习:

1.<img src="test.jpg" width="60px" height="80px">
取出src的值,width的值
取出第一个数字
取出所有数字
2.我的收藏:<span>苹果</span>和<span>香蕉</span>
取出“苹果”和“香蕉”
3.我的收藏:<span></span>和<span>香蕉</span>。
取出“香蕉”