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

目录

  • 字符类
  • 量词
  • 边界匹配
  • 逻辑和分组
  • 转义和特殊字符
  • 验证正则表达式是否能够成功提取数据


字符类

.:匹配除换行符之外的任何单个字符。
[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 的值,它应该是一个或多个数字。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/1344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux安装 swoole

第一步:去官网下载swoole扩展包 ,下载地址&#xff1a; https://github.com/swoole/swoole-src/releases,下载后放入服务器根目录即可。 第二步:cd 进到该目录。执行命令/www/server/php/71/bin/phpize(注:当时我php版本是7.1)&#xff0c;该命令执行成功后应该提示如下: Con…

DZY Loves Chemistry (并查集)

//新生训练 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <queue> using namespace std; bool a[60][60]; bool vis[60]; int n; long long int cnt; void bfs(int x) {int y;queue<int> q;v…

真实世界的密码学(二)

原文&#xff1a;annas-archive.org/md5/655c944001312f47533514408a1a919a 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第六章&#xff1a;非对称加密和混合加密 本章内容包括 对秘密信息进行加密的非对称加密方法 对数据进行加密到公钥的混合加密方法 非对称和…

mysql基础11——索引

索引 mysql高效访问数据的方式——>索引 快速检索数据的存储结构 索引分为单字段索引和双字段索引 单字段索引 创建单字段索引&#xff1a; 方式1&#xff1a;create直接创建索引 create index 索引名 on table 表名&#xff08;字段&#xff09;; 方式2&#xff1…

容器环境下 JVM 设置最佳实践

文章目录 背景解决堆内存配置jdk 版本 < 8u131jdk 版本 8u131~191jdk 版本 8u191+非堆内存配置CPU 配置最佳实践RainBond 堆内存实践第 1 步:编写 shell 脚本第 2 步:调整 Dockerfile 使用脚本设置内存完整的 Dockerfile 及 shell 脚本参考

R:UpSet韦恩图制作

#安装UpSetR install.packages("UpSetR") library(UpSetR) #install.packages("UpSetR") library(UpSetR) library(Cairo) # 从CSV文件中读取数据 setwd("C:/Users/fordata/Desktop/研究生/第二个想法(16s肠型&#xff0b;宏基因组功能)/第二篇病毒组…

互连芯片浪潮席卷AI服务器:突破瓶颈,再创辉煌

改变AI服务器&#xff1a;互连芯片技术创新和突破 AI服务器崛起&#xff0c;引领未来创新根据TrendForce数据&#xff0c;AI服务器出货量达130,000台&#xff0c;占服务器总出货量的1%。主要制造商推出生成式AI产品&#xff0c;推动订单激增。ChatGPT等应用的需求持续增长&…

使用WebSocket实现答题积分排名实时更新的功能

需求分析 接到一个需求&#xff0c;是一个答题积分小程序&#xff0c;其中有一个功能需求是需要实时更新答题积分排名的。之前通常比较常见的需求&#xff0c;都是指定某个时间点才更新答题排行榜的数据的。 经过技术调研&#xff0c;要实现答题积分排名实时更新的功能&#…

加速产能!推荐五款制造业项目管理软件

随着技术的不断发展&#xff0c;许多制造企业开始意识到使用制造业项目管理软件的重要性。在本文中&#xff0c;我们将探讨适用于制造业的项目管理软件&#xff0c;制造业项目管理软件推荐&#xff0c;以帮助项目团队更加高效管理资源。 制造业项目管理难题 怎样正确利用工作资…

Redis底层数据结构之SDS

目录 一、概述二、SDS结构三、为什么使用SDS 下一篇 redis底层数据结构之ziplist 一、概述 Redis 中的 SDS&#xff08;Simple Dynamic String&#xff0c;简单动态字符串&#xff09;是 Redis 用于存储字符串值的底层实现&#xff0c;是对 C 语言传统字符串&#xff08;以 nu…

通过本机电脑远程访问路由器loopback的ip

实验拓扑图 本机电脑增加路由信息 正常设置telnet用户&#xff0c;然后通过本地电脑telnet 软件ensp中的设备&#xff0c;尝试是否可以正常访问即可 测试通过本地电脑可以正常访问ensp里面设备的loopback的ip地址了 最重要的一点是本机需要增加一条路由route add ip mask 下…

前端开发与html学习笔记

一、前端开发概述 前端开发&#xff1a;也叫做web前端开发&#xff0c;它指的是基于web的互联网产品的页面(也可叫界面)开发及功能开发互联网产品&#xff1a;指网站为满足用户需求而创建的用于运营的功能及服务&#xff0c;百度搜索、淘宝、QQ、微博、网易邮箱等都是互联网产…

Java基础之继承、多态、抽象类

Java基础 1.猜数字小游戏 import java.util.Random; import java.util.Scanner;public class MathTest {public static void main(String[] args) {// 猜数字小游戏//int randomValue (int) (Math.random() * 100 1); 随机产生[1,101)之间的整数Random random new Random(…

【Java】实现一个简单的线程池

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 一、线程池的模式 线程池顾名思义就是管理线程的一个池子&#xff0c;我们把创建线程的过程交给线程池来处理&#xff0c;而这个线程池当中的线程都会从阻塞队列当中取获取任务执行。 我们不在直接把任务的创建过程写到…

民间故事传说(一)

秦始皇为了抵御外敌&#xff0c;修筑了一座伟大的工程&#xff0c;那就是长城。长城在现代看来是一项前无古人&#xff0c;后无来者的工程。和在古代却是劳民伤财&#xff0c;人声怨载的工程。为了修长城&#xff0c;老百姓的日子是苦不堪言&#xff0c;当兵的到处抓人&#xf…

mpu6050姿态解算与卡尔曼滤波(5)可应用于51单片机的卡尔曼滤波器

博客4中给出的滤波器状态维数为4维&#xff0c;测量量为3维&#xff0c;每次滤波需要做不少矩阵乘法和求逆运算。如果想在51单片机上实现&#xff0c;计算耗时会比较长。考虑应用场合可以对滤波器适当做一些简化&#xff0c;计算量会大大减小。 首先&#xff0c;陀螺和加速度计…

OracleDay01

ORACLE 简介 什么是 ORACLE ORACLE 数据库系统是美国 ORACLE 公司&#xff08;甲骨文&#xff09;提供的以分布式数据库为核心的一组软件产品&#xff0c;是目前最流行的客户/服务器(CLIENT/SERVER)或 B/S 体系结构的数据库之一。 ORACLE 通常应用于大型系统的数据库产品。 ORA…

NLP预训练模型-GPT-3

ChatGPT GPT-3是OpenAI开发的一个自然语言处理&#xff08;NLP&#xff09;预训练模型。GPT代表“生成式预训练变换器”&#xff08;Generative Pretrained Transformer&#xff09;。GPT-3是GPT系列的第三代模型&#xff0c;是一种采用了深度学习技术的强大语言模型&#xff…

mapreduce中的ReduceTask工作机制(Hadoop)

ReduceTask 是 Hadoop 中的一个重要组件&#xff0c;负责对 MapTask 的输出进行合并、排序和归并&#xff0c;最终生成最终的输出结果。 ReduceTask 的工作机制 1. 分组&#xff08;Shuffle&#xff09;阶段&#xff1a; 在分组阶段&#xff0c;ReduceTask 会从多个 Mapper …

(救命)Kali Linux或者其他linux系统的触控板右键按下没反应,失效的解决办法

我每次安装kali的时候都会选择gnome桌面&#xff0c;每次安装好右键都是禁用的&#xff0c;按下和左键效果一样&#xff0c;每次都得去调鼠标右键&#xff0c;原来就不好找到那个选项&#xff0c;这次踏马居然连那个选项都没了&#xff0c;如果你去网上找教程你会发现网上根本没…