首页 > 其他分享 >正则表达式中的 (?:)

正则表达式中的 (?:)

时间:2022-09-22 11:14:11浏览次数:45  
标签:abc 匹配 正则表达式 de str fg reg

(?:)表示不存储匹配的值

假如我们要在字符串中查找两个重复的单词,比如"123abcdefabc456"

let str = '123abcdefabc456';
let reg = /(\w+).*?\1/;
str.match(reg); // ['abcdefabc', 'abc']

此时,(\w+) 匹配的是第一个 'abc' ,而 \1 代表前面的(\w+)

如果我们对 \w+ 使用 ?: 标记,表示不存储 \w+的值,那么\1就没有对应的匹配,所以不能匹配到值

reg=/(?:\w+).*?\1/
str.match(reg) // null

 

再举一个例子,我们要在字符串中查找'abcde'或者'abcfg'

reg=/abc(de|fg)/g
str='abcde12abcfg'
console.log(...str.matchAll(reg))
// ['abcde', 'de'] ['abcfg', 'fg']

可以看到结果集里面出现了'de'和'fg'

如果使用?:

reg=/abc(?:de|fg)/g
console.log(...str.matchAll(reg))
// ['abcde'] ['abcfg']

'de'和'fg'消失了,使用这种方式可以避免无意义的匹配

 

第三个例子,在正则分割字符串为数组的时候,可以使用/(?:)/来分隔单个字符

assert.deepEqual("

标签:abc,匹配,正则表达式,de,str,fg,reg
From: https://www.cnblogs.com/Bin-x/p/16718474.html

相关文章

  • notepad++ 替换常用方法(正则表达式)
    Ctrl+H打开替换:行首空格和空行去除:"^\s+"->""行首插入ABCD:"^"->"ABCD"行尾空格和空行去除:"\s+$"->""行尾插入ABCD:"$"->"ABCD"按头AB,尾CD去除内容(单行非......
  • 正则表达式
    正则表达式常用符号.任意字符 除换行符外的任意单个字符 添加s修饰符,可以让.包括换行符\w单词字符 字母、数字、下划线任意单个字符。大写\W表示非单词字符 在python......
  • JavaScript 正则表达式
    正则表达式:      [email protected]      -正则表达式用于定义一些字符串的规则,        计算机可以根据正则表达式,来检查一......
  • 正则表达式的掌握
    正则表达式入门指南,看这篇就够了!点击关注......
  • Linux三剑客之一——grep及正则表达式的学习
    1.grep理论1.1grep作用1.2grep参数及说明1.3 基本正则表达式BRE集合1.4 扩展正则表达式ERE集合2.grep实践2.1grep基本参数2.2 grep正则表达式3.总结 1.gr......
  • 正则表达式的先行断言(lookahead)和后行断言(lookbehind)
    正则表达式的先行断言和后行断言一共有4种形式:(?=pattern)零宽正向先行断言(zero-widthpositivelookaheadassertion)(?!pattern)零宽负向先行断言(zero-widthnegativ......
  • python re包 正则表达式
    Python正则表达式正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。在python中提供了一个使用正则的模块re。re模块使Python语言......
  • 正则表达式
    定位符^:以某某开头(^a:以a开头)$:以某某结尾(b$:以b结尾)匹配符.:匹配任意一个字符(^a.b$:以a字符开头b字符结尾的三位字符串,中间位可以是任意字符)[]:匹配一个......
  • Python3 正则表达式
    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python自1.5版本起增加了re模块,它提供Perl风格的正则表达式模式。re模块使Py......
  • 玩转正则表达式
    玩转正则表达式本文中介绍的是主要是 3 个知识点:正则表达式的相关知识Python的中 re 模块,主要是用来处理正则表达式一个利用 re 模块通过正则表达式来进行网页......