热门标签 | 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]*匹配任何字符,但:数字,因此只有我:我:仍有匹配。


推荐阅读
  • dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用
    本文来安利大家一个有趣而且强大的库,通过F#和C#混合编程编写WPF应用,可以在WPF中使用到F#强大的数据处理能力在GitHub上完全开源Elmis ... [详细]
  • Ihaveastringwithquotesaroundthepathasfollows:我在路径周围有一个带引号的字符串,如下所示:C:\ProgramFiles(x ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 使用Pandas高效读取SQL脚本中的数据
    本文详细介绍了如何利用Pandas直接读取和解析SQL脚本,提供了一种高效的数据处理方法。该方法适用于各种数据库导出的SQL脚本,并且能够显著提升数据导入的速度和效率。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
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社区 版权所有