Skip to main content

🪄从实例入门学习正则表达式

·199 words
计算机知识
Yalois
Author
Yalois
freedom
Table of Contents

基础知识
#

正则表达式(Regular Expression,简称 regex 或 regexp)是一种用于描述字符串模式的工具,广泛应用于文本搜索、替换和数据验证等场景。

1. 基本字符
#

  • 普通字符:匹配自身,如 a 匹配字母 “a”。
  • 特殊字符:有特定意义的字符,如 .*?+^$[]{}()\ 等。

2. 特殊字符的含义
#

  • .:匹配任意单个字符(除了换行符)。
  • *:匹配前一个字符零次或多次。
  • +:匹配前一个字符一次或多次。
  • ?:匹配前一个字符零次或一次。
  • ^:匹配字符串的开始。
  • $:匹配字符串的结束。
  • []:匹配方括号内的任意一个字符,例如 [abc] 匹配 “a”、“b” 或 “c”。
  • [^]:匹配不在方括号内的任意一个字符,例如 [^abc] 匹配除 “a”、“b”、“c” 以外的任意字符。
  • {n}:匹配前一个字符恰好 n 次。
  • {n,}:匹配前一个字符至少 n 次。
  • {n,m}:匹配前一个字符至少 n 次,但不超过 m 次。

3. 转义字符
#

  • \:用于转义特殊字符,使其失去特殊意义。例如,\. 匹配字面上的点号。

4. 分组与捕获
#

  • ():用于分组,可以将多个字符组合在一起进行匹配,并且可以捕获匹配的内容。
  • |:表示“或”操作,例如 a|b 匹配 “a” 或 “b”。

5. 预定义字符类
#

  • \d:匹配任何数字,等价于 [0-9]
  • \D:匹配任何非数字字符。
  • \w:匹配任何字母、数字或下划线,等价于 [a-zA-Z0-9_]
  • \W:匹配任何非字母数字字符。
  • \s:匹配任何空白字符(空格、制表符等)。
  • \S:匹配任何非空白字符。

6. 常用模式
#

  • 邮箱地址:^[\w.-]+@[\w.-]+\.\w+$
  • 电话号码:^\d{3}-\d{3}-\d{4}$
  • URL:^(http|https)://[^\s/$.?#].[^\s]*$

7. 贪婪与非贪婪匹配
#

  • 贪婪匹配:尽可能多地匹配字符,例如 .*
  • 非贪婪匹配:尽可能少地匹配字符,使用 *?+??? 等。

8. 边界匹配
#

  • \b:匹配单词边界。
  • \B:匹配非单词边界。

9. 标志 Flags
#

  • i 表示忽略大小写
  • m 多行模式
  • s 允许 .匹配包括换⾏符在内的所有字符。
  • g global全局搜索,匹配⽂本中的所有实例。

10. 实践工具
#

  • 常用的正则表达式工具和库包括:
    • JavaScript: /pattern/
    • Python: re 模块
    • Java: java.util.regex
    • PHP: preg_* 函数

实例学习
#

1. 匹配邮政编码
#

邮政编码是非常重要的。例如,北京的邮政编码是100000,而上海的邮政编码是200000。广州的邮政编码为510000,深圳的邮政编码则是518000。此外,成都的邮政编码是610000,杭州的邮政编码为310000。

2. 匹配html标签
#

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>简单的网页</title>
</head>
<body>
    <h1>欢迎来到我的网页</h1>
    <p>这是一个简单的 HTML 示例。</p>
    <p>你可以访问 <a href="https://www.example.com">示例网站</a> 了解更多信息。</p>
</body>
</html>

3. 匹配小数
#

在最近的市场调查中,我们发现消费者的平均支出为256.75元,而在不同的产品类别中,电子产品的平均价格为899.99元,服装的平均价格为199.50元。与此同时,食品的平均支出为45.30元。调查还显示,消费者对新产品的满意度评分为4.5(满分5分),而对服务的满意度评分为3.8。

4. 匹配带有特定后缀的文件名
#

document1.docx
presentation.pptx
spreadsheet.xlsx
image1.jpg
photo.png
audio.mp3
video.mp4
archive.zip
script.py
style.css
report.pdf
notes.txt
database.sql
backup.bak
template.html
config.json
script.js
image2.gif
video.avi
archive.tar.gz
data.csv
font.ttf
markup.xml
log.txt
image3.bmp
presentation.key
project.rproj
stylesheet.scss
app.apk
source.cpp
main.go

在线匹配
#

正则表达式匹配训练

正则表达式匹配训练

匹配结果: