.net - 如何使用 .NET 匹配正则表达式中的最后一个模式?
问题描述
我想提取最接近某个部分的数字。在这个正则表达式中
\d+?[\r\n]+(.*)3.2.P.4.4.\s+Justification\s+of\s+Specifications
目标 - 试图找到一个以数字开头并以给定部分名称结尾的部分。在这种情况下,部分名称为( 3.2.P.4.4. Justification of Specifications)
实际结果 - 正则表达式匹配所有内容,因为模式以数字开头。预期结果 - 正则表达式应从 29 开始,这是该部分最接近的数字。我尝试了许多选项,例如不贪婪的量词等,但似乎没有一个有效。
解决方案
您可以使用否定前瞻来断言下一行不以空格字符开头,后跟数字和换行符:
^ \d+[\r\n](?:(?!\s+\d+[\r\n]).*[\r\n])*3\.2\.P\.4\.4\.\sJustification\s+of\s+Specifications
解释
^
字符串的开始\d+[\r\n]
匹配空格、1+ 位和换行符(?:
非捕获组(?!
断言以下内容的负前瞻不是\s+\d+[\r\n]
匹配 1+ 个空白字符、1+ 个数字和换行符
)
关闭负前瞻.*[\r\n]
匹配任何以换行符结尾的字符
)*
关闭非捕获组并重复 0+ 次3\.2\.P\.4\.4\.\sJustification\s+of\s+Specifications
匹配部分名称
推荐阅读
- ruby-on-rails - 如何使用 Resque 和 Redis 对队列进行优先级排序
- reactjs - 获取 TS 错误:“IAuth | 类型”上不存在属性“用户” 无效的'
- html - html的mailto url有什么限制
- c# - 如何在 EF6 原始 sql 函数中传递标量参数?
- php - 回声中的 PHP $_POST 函数 x()
- c# - 使用 modelbuilder.HasKey() 会导致实体框架新迁移出错
- netsuite - NetSuite SCA - 对页脚所做的编辑未显示
- django - Django Rest Framework中更新方法的区别?
- python-3.x - 忽略命令中的异常无:discord.ext.commands.errors.CommandNotFound:找不到命令“makePoll”
- r - 如何读取同一文件夹中多个 .txt 文件的第一行并写入 R 中的另一个 .txt 文件?