正则基础之 捕获组(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日

相关文章

  • JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)

    JavaScript字符串对象 toLowerCase() 方法入门实例 toLowerCase() 方法简介 JavaScript 中的字符串对象有一个 toLowerCase() 方法,用于把字符串中的字母都转换成小写字母。该方法是字符串类型的实例方法,意味着只能通过字符串对象调用该方法。 toLowerCase() 方法语法 string.toLowe…

    JavaScript 2023年5月28日
    00
  • js获取浏览器的各种属性

    当我们需要编写网页时,能够获取浏览器属性的JS脚本的价值是非常巨大的。下面,我们将详细讲解下如何获取浏览器的各种属性。 1. 获取浏览器窗口大小 我们可以通过window.innerWidth和window.innerHeight属性来获取当前窗口的宽度和高度。以下是一个示例代码块: let windowWidth = window.innerWidth; …

    JavaScript 2023年6月11日
    00
  • Jquery cookie操作代码

    当涉及到网站开发时,处理用户的Cookie数据变得非常重要。Jquery框架提供了方便的方法来处理Cookies。 以下是几个可以使用jQuery对cookie进行操作的方法: 设置Cookie 设置cookie有以下几个参数: $.cookie(‘cookieName’, ‘cookieValue’, { expires: 7, path: ‘/’ });…

    JavaScript 2023年6月11日
    00
  • 一行代码告别document.getElementById

    下面是“一行代码告别document.getElementById”的完整攻略: 1. document.querySelector方法说明 document.querySelector 方法用于获取文档中匹配指定选择器的第一个元素。这个方法返回的是一个元素节点对象,如果没有匹配到元素则返回null。 语法: element = document.query…

    JavaScript 2023年6月10日
    00
  • js escape,unescape解决中文乱码问题的方法

    对于想要在 URL 参数中包含中文字符的情况,我们必须使用一些特殊的方法进行转义和解码,以确保字符不会在传输过程中被破坏。 一种常见的解决方案是使用 escape 和 unescape 函数进行转义和解码,它们是 JavaScript 中的内置函数,可以直接使用。它们可以将任何字符转义为 %XX 格式,其中 XX 是字符的 ASCII 码的十六进制表示。例如…

    JavaScript 2023年5月19日
    00
  • JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍

    JavaScript 中定义函数有两种常用的方式:使用函数表达式(function expression)和函数声明(function declaration)。在使用函数表达式时,可以使用 var 声明一个变量并赋值为函数,也可以使用 function 关键字直接定义函数。那么 var foo = function () {} 和 function foo…

    JavaScript 2023年5月27日
    00
  • JS仿JQuery选择器功能

    下面是JS仿JQuery选择器功能的完整攻略,包含如何实现选择器、示例说明以及注意事项等。 选择器实现原理 实现JS仿JQuery选择器功能的核心在于通过遍历DOM树,找到与选择器匹配的元素。以下是具体实现方法: 解析选择器字符串,获取选择器匹配的元素类型和其他属性,如类名、ID等。 遍历DOM树,从根节点开始,递归查找所有节点,将匹配选项和节点做比对。 检…

    JavaScript 2023年6月10日
    00
  • 纯JavaScript实现的兼容各浏览器的添加和移除事件封装

    以下是实现“纯JavaScript实现的兼容各浏览器的添加和移除事件封装”的完整攻略: 一、为什么要封装添加和移除事件的方法? 当我们在实现网页的交互效果时,通常需要使用JavaScript来操作DOM元素并添加相应的事件来触发我们所需的功能。JavaScript提供了添加事件监听器的方法,如addEventListener(),但不同浏览器实现这一方法的方…

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