正则基础之 捕获组(capture group)

正则基础之 捕获组(capture group)

介绍

在正则表达式中,捕获组是一个由括号包围的子表达式。在使用正则表达式匹配字符串时,可以通过捕获组从匹配到的字符串中提取想要的部分。

捕获组可以使用圆括号中的数字引用到,如果有多个捕获组,可以通过捕获组的序号来区分哪一个捕获组是被引用的。除了序号之外,也可以给捕获组设置名字,用于更清晰、方便的引用。

示例

下面是两个具体的示例,在这些示例中都展示了如何在正则表达式中使用捕获组。为了更清晰方便,我们使用JavaScript语言对这些示例进行了实现。

示例一

假设我们有一个字符串,想要从字符串中提取出其中的手机号码。这时候可以使用正则表达式和捕获组来快速实现:

const str = 'Hi,我的手机号是15555555555, bye!'
const reg = /1[35789]\d{9}/ // 匹配手机号码的正则表达式
const match = str.match(reg) // 匹配字符串
if (match) {
  const phone = match[0] // 取出第一个捕获组的内容
  console.log('匹配到的手机号码是:', phone)
} else {
  console.log('未匹配到手机号码')
}

在这个示例中,我们使用了一个正则表达式来匹配手机号码,保存在一个变量 reg 中。然后我们使用字符串的 match 方法来对字符串进行匹配,得到一个匹配结果 match

match 结果中,每个匹配到的字符串都是一个数组元素。由于我们只匹配了一个电话号码,所以 match 只包含一个元素。我们通过索引 0 来取出这个元素,并保存在 phone 变量中。

示例二

假设有一个字符串,其中包含了多个邮箱地址。我们想要从这些邮箱地址中提取出邮箱的用户名和域名。这里的用户名和域名之间通过 @ 符号分开。这时可以使用正则表达式的捕获组来实现:

const str = '我的电子邮箱是test1@test.com,还有一个邮箱是test2@test.com'
const reg = /([\w-.]+)@([\w\-]+\.\w+)/g // 匹配所有邮箱地址的正则表达式
const matches = [...str.matchAll(reg)] // 匹配字符串中的所有邮箱地址
for (const match of matches) {
  const username = match[1] // 取出用户名
  const domain = match[2] // 取出域名
  console.log(`匹配到的邮箱用户名是:${username},域名是:${domain}`)
}

在这个示例中,我们使用了一个正则表达式来匹配所有的邮箱地址,并将其保存在一个变量 reg 中。我们使用字符串的 matchAll 方法来对字符串进行匹配,得到一个迭代器对象。

在每个匹配结果中,第一个捕获组保存了邮箱的用户名,第二个捕获组保存了邮箱的域名。我们通过取出这两个捕获组的内容,分别保存在 usernamedomain 变量中,并将其打印出来。

结论

通过上述示例和讲解,我们了解了正则表达式中的捕获组的使用方法。它可以帮助我们从匹配到的字符串中提取想要的内容,并提供了方便的方式来访问这些内容。在实际使用中,还可以和一些高级用法结合使用,如非捕获组、正则表达式替换等等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:正则基础之 捕获组(capture group) - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • js Array的用法总结

    JS Array的用法总结 简介 Javascript中的Array是一种有序数据类型,可以用来存储任何类型的数据,包括数字、字符串、甚至对象等。 声明与初始化 可以使用以下两种方式来声明和初始化一个数组: 直接声明并赋值 var arr = [1, 2, 3]; 使用Array()构造函数 var arr = new Array(1, 2, 3); 注意,…

    JavaScript 2023年5月27日
    00
  • JS前后端实现身份证号验证代码解析

    下面是“JS前后端实现身份证号验证代码解析”的完整攻略。 前言 身份证号是人们最常用的个人身份证明,因此在各个业务场景中,我们经常需要对输入的身份证号进行格式验证。本文将介绍如何使用 JavaScript 在前后端实现身份证号验证,帮助开发者更好地应对业务需求。 方案概述 实现身份证号验证的主要过程如下: 在前端通过 JavaScript 判断用户输入的身份…

    JavaScript 2023年6月10日
    00
  • TypeScript联合类型,交叉类型和类型保护

    让我来为你详细讲解一下 TypeScript 的联合类型、交叉类型和类型保护攻略。 联合类型 联合类型(Union Types)表示取值可以为多种类型中的一种。用竖线 | 连接多个类型,例如: let value: string | number; value = ‘hello’; // 字符串 value = 123; // 数字 上面的代码中,变量 va…

    JavaScript 2023年5月27日
    00
  • JavaScript递归函数定义与用法实例分析

    JavaScript递归函数定义与用法实例分析 什么是递归函数 递归函数是指在函数的定义中调用函数自身的情况,通常用来解决需要重复执行某个任务的问题。 递归函数的定义 递归函数的定义遵循如下模式: function functionName(parameters){ // 基线条件(停止条件): if (parameters == Stop){ return…

    JavaScript 2023年6月11日
    00
  • JS实现日期加减的方法

    JS实现日期加减的方法可以使用Date对象的方法来实现。下面是具体的步骤: 1.获取当前日期 首先需要获取当前的日期,可以使用以下代码: const currentDate = new Date(); 这段代码会创建一个Date对象,同时获取运行时的当前日期和时间,并存储在currentDate中。 2.实现日期加减 2.1 加法 要实现日期加减,我们可以使…

    JavaScript 2023年5月27日
    00
  • JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】

    概述 本文将介绍如何使用JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果。Sketch.js是一个轻量级的库,用于创建基于HTML5画布的交互式Web应用程序。该库提供了许多工具和方法,使用户可以轻松地在画布上绘制、擦拭、编辑和操作对象。本文将通过实现蝌蚪游动动画效果,介绍如何使用Sketch.js来创作基于交互式画布的动态Web应用程序。 实现…

    JavaScript 2023年5月28日
    00
  • js 字符串转化成数字的代码

    当我们需要将一个JS字符串转化成数字时,我们可以使用Javascript内置的parseInt() 函数或parseFloat() 函数。 parseInt()函数 parseInt() 函数可解析一个字符串,并返回一个整数。它的语法格式如下: parseInt(string, radix) 其中,string是需要被转换的字符串,radix是进制数,表示被…

    JavaScript 2023年5月28日
    00
  • 非常酷炫的Bootstrap图片轮播动画

    下面是“非常酷炫的Bootstrap图片轮播动画”的完整攻略: 1.准备工作 在使用Bootstrap图片轮播动画之前,需要对代码进行一定的准备工作: 引入jQuery和Bootstrap的CSS和JS文件 <!– 引入jQuery –> <script src="https://code.jquery.com/jquery-…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部