热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在一个积极的工作背后,原子集团是如何运作的?-Howdoesatomicgroupinsideapositivelookbehindwork?

Idontunderstandwhytheregex(?<i:(?>\D*))\ddoesnotmatchthestringi:>1.我不明白为什么re

I don't understand why the regex (?<=i:(?>\D*))\d does not match the string i:>1.

我不明白为什么regex (?<= I:(?>\D*) \D与字符串I:>1不匹配。

The way I undertand it:

我理解的方式是:

  • at index 0: the lookbehind i won't match
  • 在索引0处:后视镜我不匹配
  • at index 1: the lookbehind i: won't match
  • 在索引1:lookbehind i:不会匹配
  • at index 2: the lookbehind i:(?>\D*) will match i: but the \d after the lookbehind won't match >
  • 索引2:lookbehind i:(?>\D*)将匹配i:但lookbehind后面的\D不会匹配>
  • at index 3: the lookbehind i:(?>\D*) will match i:> and the \d after the lookbehind will match 1 -> the regex is satisfied
  • 在索引3:后面的i:(?>\D*)将匹配i:>和\D后面的后面将匹配1 ->,regex满足。

1 个解决方案

#1


2  

See Regular Expressions Cookbook: Detailed Solutions in Eight Programming Languages:

参见正则表达式食谱:八种编程语言的详细解决方案:

.NET allows you to use anything inside lookbehind, and it will actually apply the regular expression from right to left. Both the regular expression inside the lookbehind and the subject text are scanned from right to left.

. net允许您在lookbehind内部使用任何东西,它实际上会从右到左应用正则表达式。从右到左扫描lookbehind内部的正则表达式和主题文本。

The (?<=i:(?>\D*))\d pattern does not match the 1 in i:>1 because the atomic group (?>\D*) prevents any backtracking into its pattern. The i: (actually, : and then i gets matched) is matched with \D*, and then there no way to re-match i: as the atomic group does not allow backtracking.

(?<=i:(?>\D*) \D模式与i:>1中的1不匹配,因为原子组(?>\D*)防止任何回溯到它的模式。i:(实际上,:,然后我被匹配)与\D*匹配,然后就没有办法重新匹配i:因为原子组不允许回溯。

You can also see that (?<=i:(?>[^:\d]*))\d will match 1 in i:>1 because here, [^:\d]* matches any char but : and digits, and thus only comes up to i: and i: is still there to be matched.

您还可以看到,(? <=我:(? > ^:\[d]*))\ d将匹配1我:> 1因为这里,^:\[d]*匹配任何字符,但:数字,因此只有我:我:仍有匹配。


推荐阅读
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用
    本文来安利大家一个有趣而且强大的库,通过F#和C#混合编程编写WPF应用,可以在WPF中使用到F#强大的数据处理能力在GitHub上完全开源Elmis ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了 com.facebook.drawee.view.SimpleDraweeView 中的 setScaleType 方法,提供了多个实际代码示例,并解释了其在不同场景下的应用。 ... [详细]
  • 深入解析JMeter中的JSON提取器及其应用
    本文详细介绍了如何在JMeter中使用JSON提取器来获取和处理API响应中的数据。特别是在需要将一个接口返回的数据作为下一个接口的输入时,JSON提取器是一个非常有用的工具。 ... [详细]
  • Ihaveastringwithquotesaroundthepathasfollows:我在路径周围有一个带引号的字符串,如下所示:C:\ProgramFiles(x ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
author-avatar
海峡整形美容医院少校
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有