正则基础之 捕获组(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中的鼠标事件有哪些(用法示例学习进阶)

    JS中的鼠标事件是指在浏览器中用户和鼠标交互时,所触发的事件。在前端开发中,这些鼠标事件被广泛应用于各种网站和应用程序中。下面将介绍一些常用的鼠标事件以及它们的用法示例。 鼠标单击事件(click) 鼠标单击事件(click)是指在鼠标左键单击时所触发的事件。在页面中使用最为广泛的是按钮的单击事件。下面是一个示例,当按钮被单击时,将弹出一个提示框。 <…

    JavaScript 2023年6月11日
    00
  • 创建与框架无关的JavaScript插件

    创建与框架无关的JavaScript插件,需要考虑以下关键要点: 1. 避免与全局命名空间冲突 在创建插件时,应尽可能避免使用全局命名空间中已存在的变量和函数。可以通过创建一个伪命名空间,将插件中的所有变量和函数保存在其中,并确保不会与其他脚本发生冲突。 var MyPlugin = (function() { // 插件的代码放在这里… })(); 2…

    JavaScript 2023年6月11日
    00
  • React 条件渲染最佳实践小结(7种)

    React 条件渲染是一个非常常见的操作,在React中也有很多种实现方法。以下就是7种React条件渲染的最佳实践。 1. if…else 第一种方法就是使用if…else实现条件渲染。示例如下: render() { if (someCondition) { return <div>Some JSX</div>; } el…

    JavaScript 2023年6月11日
    00
  • JS数据分析数据去重及参数序列化示例

    下面是“JS数据分析数据去重及参数序列化示例”的完整攻略。 一、什么是数据去重? 数据去重是指在一组数据中删除重复数据的过程。在网站数据分析过程中,如果要统计某个特定行为的用户数,就需要进行数据去重。 二、如何进行数据去重? 数据去重的步骤如下: 1. 获取原始数据 获取需要进行去重处理的原始数据,这里我们以一个购物网站为例,假设有一个存储用户购买行为的数据…

    JavaScript 2023年6月11日
    00
  • 在HTML中插入JavaScript代码的示例

    在HTML中插入JavaScript代码有多种方式,包括内部脚本、外部脚本和行内脚本。下面给出三种示例说明。 1. 内部脚本 内部脚本指的是将JavaScript代码直接嵌入HTML中,这种方式在HTML中使用标签来实现。下面是一个示例如何通过内部脚本来实现响应点击事件: <!DOCTYPE html> <html> <head…

    JavaScript 2023年5月18日
    00
  • javascript Object与Function使用

    JavaScript中的对象和函数在语言中扮演着非常重要的角色。对象是对现实世界事物的抽象,可以代表现实世界中的任何概念。作为一种特殊类型的对象,函数是JavaScript的核心概念之一,几乎在任何JavaScript程序中都会用到。本文将详细讲解JavaScript中对象和函数的使用,帮助读者更好地理解它们的概念、使用方法和应用场景。 对象 JavaScr…

    JavaScript 2023年5月27日
    00
  • 一波JavaScript日期判断脚本分享

    接下来我将分享一波JavaScript日期判断脚本的详细攻略。 一、背景介绍 在Web开发中,我们经常需要处理日期相关的问题,比如日期的比较、日期的格式化等。这时候,我们就需要使用JavaScript来实现这些功能。为了方便我们的开发,我在这里给大家分享一波JavaScript日期判断脚本。 二、实现思路 我们的实现思路是基于JavaScript原生的Dat…

    JavaScript 2023年5月27日
    00
  • MutationObserver监视对DOM 树所做更改的功能妙用

    MutationObserver是一种Web API,它可以监视对DOM树所做的更改,并在更改发生时触发回调函数。它可以监视DOM的三类更改:子节点树的更改、属性的更改以及文本内容的更改。MutationObserver的用途非常广泛,特别是在与React、Vue等前端框架结合使用时,可以帮助我们轻松地实现数据绑定、自定义指令等功能。 MutationObs…

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