正则表达式反向引用乘法[重复]

     2023-03-28     105

关键词:

【中文标题】正则表达式反向引用乘法[重复]【英文标题】:Regex Backeference Multiplying [duplicate] 【发布时间】:2019-05-06 16:11:01 【问题描述】:

我正在尝试学习正则表达式,我尝试解决的练习之一如下:

我有一个字符串:

    "london new york" 

我正在尝试匹配正则表达式。

模式是这样的:

    r"(..o(.)).+(\2)*"

结果是ndon new york

据我了解, (\2) 匹配 n 但什么匹配 ew york ? 还有* 中的(\2)* 有什么作用?是否尝试匹配n 或特殊字符.

【问题讨论】:

(\2)* 可以匹配一个空字符串,因为它是 * 量化的。 .+ 有效匹配整行的其余部分。 这里需要实现什么?请解释规则、你需要得到什么以及为什么。 【参考方案1】:

这样看

 (                             # (1 start)
      . . o
      ( . )                         # (2)
 )                             # (1 end)
 ( .+ )                        # (3)
 ( \2 )*                       # (4)

 **  Grp 0 -  ( pos 2 : len 13 ) 
ndon new york  
 **  Grp 1 -  ( pos 2 : len 4 ) 
ndon  
 **  Grp 2 -  ( pos 5 : len 1 ) 
n  
 **  Grp 3 -  ( pos 6 : len 9 ) 
 new york  
 **  Grp 4 -  NULL 

您可以看到第 4 组始终为空。 第 4 组始终为空,因为第 3 组占用所有air 当前行的剩余部分,从不 为可选组 4 留下任何东西。

在使用量词*+ 时仍然必须小心 捕获组。那是因为的每次迭代, 如果匹配将有助于整个匹配,但是只有 该组将保留最后一次迭代,因为它是 每次都会覆盖内容。

【讨论】:

正则——反向引用

 反向引用:捕获组捕获到的内容,不仅可以在正则表达式外部通过程序进行引用,也可以在正则表达式内部进行引用,这种引用方式就是反向引用 //反向引用varstr=‘#1234‘;varre=/#(d+)/;re.test(str);console.log(RegExp.$1);//反向引... 查看详情

正则表达式-分组分组引用反向引用多选非捕获分组(代码片段)

分组作用:将相关的元素聚拢到一起,构成一个单元素例子1:身份证号码是一个长度为15或18个字符的字符串,如果是15位,则全部由数字组成,首位不能为0;如果是18位,则前17位全部是数字,末位可能是数字,也可能是x[插图]... 查看详情

Java中的正则表达式反向引用

】Java中的正则表达式反向引用【英文标题】:RegexbackreferencesinJava【发布时间】:2018-07-1312:13:56【问题描述】:我必须匹配一个数字后跟它本身14次。然后我来到regexstor.net/tester中的如下正则表达式:(\\d)\\114编辑当我将它粘贴到... 查看详情

如何在正则表达式中反向引用“内部”选择( () )?

】如何在正则表达式中反向引用“内部”选择(())?【英文标题】:Howtobackreference"inner"selections(())inaregularexpression?【发布时间】:2022-01-1416:58:15【问题描述】:如何在Regex中反向引用内括号?示例数据是一个产品价格表... 查看详情

IntelliJ 中的正则表达式反向引用

】IntelliJ中的正则表达式反向引用【英文标题】:RegExbackreferencesinIntelliJ【发布时间】:2010-11-2803:39:33【问题描述】:我想使用IntelliJ的查找和替换功能来执行以下转换://Replacethismodel.put(\'foo\',\'bar\')//Withthismodel[\'foo\']=bar我尝试... 查看详情

搜索/替换中的 Notepad++ 正则表达式反向引用语法 - \1 或 $1

】搜索/替换中的Notepad++正则表达式反向引用语法-\\\\1或$1【英文标题】:Notepad++RegexBackreferencesyntaxinSearch/Replace-\\1or$1搜索/替换中的Notepad++正则表达式反向引用语法-\\1或$1【发布时间】:2012-08-1119:31:13【问题描述】:我尝试使用No... 查看详情

在 sed 中使用反向引用正则表达式

】在sed中使用反向引用正则表达式【英文标题】:usingbackreferencesregexinsed【发布时间】:2011-04-0405:02:28【问题描述】:我想用单个字符删除文件中的多个空格。示例catkillratdogkillcat我使用了以下正则表达式,它似乎在http://www.regexp... 查看详情

正则表达式;反向引用字符集中不匹配的字符

】正则表达式;反向引用字符集中不匹配的字符【英文标题】:Regex;backreferencingacharacterthatwasNOTmatchedinacharacterset【发布时间】:2012-03-3121:10:12【问题描述】:我想构造一个正则表达式,它匹配\'或",然后匹配其他字符,分别... 查看详情

是否有用于反向引用的大写/小写版本的正则表达式替换术语? [复制]

】是否有用于反向引用的大写/小写版本的正则表达式替换术语?[复制]【英文标题】:Istherearegexreplacementtermfortheuppercase/lowercaseversionofabackreference?[duplicate]【发布时间】:2014-01-0714:03:50【问题描述】:假设我想将一个小写字符串... 查看详情

使用分组时如何使用 gsub 在 Ruby 正则表达式 (regex) 中反向引用?

】使用分组时如何使用gsub在Ruby正则表达式(regex)中反向引用?【英文标题】:HowtobackreferenceinRubyregularexpression(regex)withgsubwhenIusegrouping?【发布时间】:2012-08-1710:31:54【问题描述】:我想修补一些从网页中提取的文本数据。示例:t=... 查看详情

具有奇怪行为的正则表达式:将字符串与反向引用匹配以允许转义以及单引号和双引号

】具有奇怪行为的正则表达式:将字符串与反向引用匹配以允许转义以及单引号和双引号【英文标题】:RegExwithstrangebehaviour:matchingStringwithbackreferencetoallowescapingandsingleanddoublequotes【发布时间】:2011-04-3002:39:27【问题描述】:匹配... 查看详情

正则表达式(代码片段)

正则表达式语法--1.普通字符正则表达式语法--2.标准字符正则表达式语法--3.自定义字符集合正则表达式语法--4.量词d6:d重复6次,即匹配6个数字dd6:7位,因为只修饰它前面的那一个(dd)6才表示匹配12位 正则... 查看详情

引用类型--regexp类型

ECMAScript通过RegExp类型来支持正则表达式。使用下面语法就可以创建一个正则表达式。varexpression=/pattern/flags;模式(pattern):可以是任何简单或复杂的正则表达式,可以包含字符类、限定符、分组、向前查找以及反向引用。标志(f... 查看详情

正则捕获组之反向引用(代码片段)

之前写正则的时候,经常用到(.*?)之类的用法.一般在替换的时候会用$1来引用括号里面匹配到的内容比如,1.1.1.1aaaa2.2.2.2bbbb3.3.2.3ccca我们想在这段这文本的数字后面重复加上一个与最后一个数字相同的数字,即替换后的文本应该为1.1.... 查看详情

perl学习正则表达式

模式分组:/fred+/会匹配freddd这样的/(fred)+/会匹配fredfredfred这样的/(fred)*/则会匹配abcdef任意的圆括号同时也使得重新使用某些字符串成为可能。反向引用来引用圆括号中的模式所匹配的文字,这个行为我们称为捕获组。反向行为... 查看详情

正则表达式之基础

获取匹配上面提到的子模式可以分为两种情况-Capturing(获取匹配)和Non-Capturing(非获取匹配)获取匹配:匹配时会将所有子模式匹配结果存储起来,可供后面查找或者替换,比如后向引用。非获取匹配:子模式的匹配结果不会... 查看详情

正则表达式括号的作用(代码片段)

不管哪门语言中都有括号。正则表达式也是一门语言,而括号的存在使这门语言更为强大。对括号的使用是否得心应手,是衡量对正则的掌握水平的一个侧面标准。括号的作用,其实三言两语就能说明白,括号提供了分组,便于... 查看详情

正则表达式--元字符(转)

 正则表达式括号的作用1、限制多选项的范围(Fri|1)st 这样写会匹配Frist或1st 如果去掉,则Fri|1st就是匹配Fri或1st2、将若干个字符进行组合,受量词的同时作用。例如th+ 表示匹配ththhthhh(h无数次),如果是(th)+,则匹配的是thththth... 查看详情