【正则表达式】正则表达式基本语法元素

目录


字符类

.:匹配除换行符之外的任何单个字符。
[abc]:匹配方括号内的任何字符。
[^abc]:匹配不在方括号内的任何字符。
[a-z]:匹配任何小写字母。
[A-Z]:匹配任何大写字母。
[0-9]:匹配任何数字。
\d:匹配任何数字,等价于 [0-9]。
\D:匹配任何非数字字符。
\w:匹配任何单词字符(等价于 [a-zA-Z0-9_])。
\W:匹配任何非单词字符。
\s:匹配任何空白字符(如空格、制表符、换行符等)。
\S:匹配任何非空白字符。


量词

*:匹配前面的元素零次或多次
+:匹配前面的元素一次或多次
?:匹配前面的元素零次或一次
{n}:匹配前面的元素恰好 n 次
{n,}:匹配前面的元素至少 n 次
{n,m}:匹配前面的元素至少 n 次 ,但不超过 m 次


边界匹配

^:匹配输入字符串的开始位置。
$:匹配输入字符串的结束位置。
\b:匹配一个单词边界。
\B:匹配非单词边界。


逻辑和分组

|:匹配 | 两侧的任一模式。
():捕获括号,用于分组和提取子匹配。
(?:...):非捕获括号,只用于分组,不提取子匹配。
(?=...):正向肯定预查,断言自身位置后面能匹配表达式。
(?!...):正向否定预查,断言自身位置后面不能匹配表达式。
(?<=...):反向肯定预查,断言自身位置前面能匹配表达式。
(?<!...):反向否定预查,断言自身位置前面不能匹配表达式。


转义和特殊字符

\:转义字符,用于转义特殊字符或指定特殊序列(如 \n 表示换行符)。


验证正则表达式是否能够成功提取数据

使用https://rubular.com/网站:

解释这里的正则表达式.+uri:(?<uri>[\w\/]+) got a pv, c_time:(?<c_time>\d+), idc:(?<idc>\w+), errno:(?<errno>\d+)

  1. .+

    • . 匹配任意单个字符(除了换行符)。
    • + 表示前面的元素(即.)可以出现一次或多次。
    • 所以 .+ 匹配任意长度的字符序列(至少一个字符),直到遇到后面的模式为止。
  2. uri:

    • 这部分直接匹配文本中的 "uri:" 字符串。
  3. (?<uri>[\w\/]+)

    • 这是一个命名捕获组,名为 uri
    • [\w\/]+ 匹配一个或多个单词字符(\w,等价于 [a-zA-Z0-9_])或斜杠字符(\/)。
    • 这部分用于捕获 URI 路径,它可能包含字母、数字、下划线和斜杠。
  4. got a pv,

    • 这部分直接匹配文本中的 "got a pv," 字符串。
  5. c_time:(?<c_time>\d+)

    • c_time: 直接匹配文本中的 "c_time:" 字符串。
    • (?<c_time>\d+) 是一个命名捕获组,名为 c_time
    • \d+ 匹配一个或多个数字字符。
    • 这部分用于捕获 c_time 的值,它应该是一个或多个数字。
  6. idc:(?<idc>\w+)

    • idc: 直接匹配文本中的 "idc:" 字符串。
    • (?<idc>\w+) 是一个命名捕获组,名为 idc
    • \w+ 匹配一个或多个单词字符。
    • 这部分用于捕获 idc 的值,它应该是一个或多个字母、数字或下划线。
  7. errno:(?<errno>\d+)

    • errno: 直接匹配文本中的 "errno:" 字符串。
    • (?<errno>\d+) 是一个命名捕获组,名为 errno
    • \d+ 匹配一个或多个数字字符。
    • 这部分用于捕获 errno 的值,它应该是一个或多个数字。
相关推荐
confiself1 小时前
GO环境配置
linux·运维·centos
爱装代码的小瓶子1 小时前
【c++与Linux基础】文件篇(4)虚拟文件系统VFS
linux·开发语言·c++
可可嘻嘻大老虎6 小时前
nginx无法访问后端服务问题
运维·nginx
JiMoKuangXiangQu7 小时前
ARM64 进程虚拟地址空间布局
linux·arm64 虚拟地址布局
阳光九叶草LXGZXJ7 小时前
达梦数据库-学习-47-DmDrs控制台命令(LSN、启停、装载)
linux·运维·数据库·sql·学习
无忧智库7 小时前
某市“十五五“地下综合管廊智能化运维管理平台建设全案解析:从数字孪生到信创适配的深度实践(WORD)
运维·智慧城市
春日见7 小时前
如何避免代码冲突,拉取分支
linux·人工智能·算法·机器学习·自动驾驶
珠海西格8 小时前
“主动预防” vs “事后补救”:分布式光伏防逆流技术的代际革命,西格电力给出标准答案
大数据·运维·服务器·分布式·云计算·能源
无垠的广袤8 小时前
【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:缺陷检测
linux·人工智能·python·opencv·开发板
阿波罗尼亚8 小时前
Kubectl 命令记录
linux·运维·服务器