当前位置: 首页 > 编程笔记 >

浅谈正则表达式中的分组和引用实现方法

王飞英
2023-03-14
本文向大家介绍浅谈正则表达式中的分组和引用实现方法,包括了浅谈正则表达式中的分组和引用实现方法的使用技巧和注意事项,需要的朋友参考一下

问题

在外刊君读者群中看到有人提出这样的一个需求:

把字符串切成连续相同字符的正则怎么写?比如abbcccdddd切成a,bb,ccc,dddd

之前我对正则表达式也是略有研究,想尝试一下。其实我对正则表达式的学习基本完全来源于犀牛书的第10章,真正看懂这一章,我觉得操作正则表达式应该不在话下。

我的答案

先给出我的答案吧:

'abbccddd'.match(/(\w)\1*/g) // ["a", "bb", "cc", "ddd"]

说明

拿到这个问题,首先要匹配字符[a-zA-Z0-9],这里直接使用\w。然后是全局匹配,在最后加上g。难点在于怎么判断重复。

翻看了犀牛书后,又读了一遍分组和引用的部分。使用小括号()将字符作为一个最小单元,同时小括号还能记忆这个组合相匹配的字符串。再使用反斜杠\引用前面分组的表达式,数字1表示第一个小括号。这时完成了2个字符重复的要求。最后再使用*来匹配出现0次或n次。这个正则表达式就写完了。

下面详细说说分组和引用。

正则表达式的选择、分组和引用字符表

字符 含义
| 选择,匹配的是该符号左边的子表达式或右边的子表达式
(...) 组合,将几个项组合为一个单元,这个单元可通过* + ? | 等符号加以修饰,而且可以记住和这个组合相匹配的字符串以提供伺候的引用使用
(?:...) 只组合,把项组合到一个段元,但不记忆与该组相匹配的字符
\n 和第n个分组第一次匹配的字符相匹配,组是圆括号中的子表达式(也有可能是嵌套的),组索引是从左到右的左括号数,(?:形式的分组不编码

这篇文章就介绍到这了,希望大家以后多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍浅谈C#中正则表达式的使用,包括了浅谈C#中正则表达式的使用的使用技巧和注意事项,需要的朋友参考一下 目前为止,许多编程语言和工具都包含对正则表达式的支持,C#也不例外,C#基础类库中包含有一个命名空间(System.Text.RegularExpressions)和一系列可以充分发挥规则表达式威力的类(Regex、Match、Group等)。那么,什么是正则表达式,怎么定义正则表达

  • 本文向大家介绍浅谈python中的正则表达式(re模块),包括了浅谈python中的正则表达式(re模块)的使用技巧和注意事项,需要的朋友参考一下 一、简介 正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。 二、正则表达式中常用的字符含义 1、普通字符

  • 问题内容: 如何在MySQL中使用正则表达式引用组?我试过了: 但它不起作用。这个怎么做? 问题答案: 您不能,在MySql中无法引用正则表达式捕获组。

  • 本文向大家介绍简单谈谈JS中的正则表达式,包括了简单谈谈JS中的正则表达式的使用技巧和注意事项,需要的朋友参考一下 1、正则表达式包括两部分 ①定义正则表达式的规则; ②正则表达式的模式(i/g/m); 2、声明正则表达式 ① 字面量声明: var reg = /表达式规则/表达式模式;   eg:var reg = /white/g; ② 使用new关键字: var reg = new RegE

  • 本文向大家介绍正则表达式捕获Java中的组和反向引用,包括了正则表达式捕获Java中的组和反向引用的使用技巧和注意事项,需要的朋友参考一下 捕获组是一种将多个字符视为一个单元的方法。通过将要分组的字符放在一组括号内来创建它们。例如,正则表达式(狗)创建一个包含字母“ d”,“ o”和“ g”的单个组。 捕获组通过从左到右计数其开括号来编号。例如,在表达式((A)(B(C)))中,有四个这样的组-

  • 我有3个正则表达式,但当模式匹配时执行相同的操作,所以我考虑将所有三个表达式合并为一个。我尝试了很多,但无法让“|”I.e”或“在我的正则表达式中工作 regex1:<代码>文本。替换(/([\u00A9-\u3299])/g,函数myFunction(x){…} regex2: regex3: 我试过这样做,但它不起作用regex: