regex - Negative Lookahead - 查找字符串的最后一次出现
问题描述
我需要找到 RegEx 模式的最后一次出现。我认为可以使用 Negative Lookahead,但我不知道它是如何工作的。
请帮忙。
模式:###\s\d+/\d+\s-\s\w+\s\d+,\s\d{4}
期望的结果:“### 2/14 - 2021 年 7 月 30 日”
示例文本:
# Note Title
Bunch of text
### 1/14 - July 30, 2021
More text. Blah blah.
### 2/14 - July 30, 2021
解决方案
您可以使用否定前瞻来表述最后一次出现的情况,该否定前瞻断言目标模式在输入的稍后阶段不会再次出现:
###\s\d+/\d+\s-\s\w+\s\d+,\s\d{4}(?!.*###\s\d+/\d+\s-\s\w+\s\d+,\s\d{4})
演示
请注意,我假设在上述模式中将启用 dot all 模式。如果您的正则表达式工具不支持全点模式,则将.*
否定前瞻中的[\s\S]*
.
推荐阅读
- mod-security - ModSecurity - 有没有办法根据规则配置 DetectionOnly
- php - 在单行中获取数据(键 - 值)
- qt - 如何通过索引 QML 为网格布局上的 1 项设置颜色?
- javascript - 计算多个异步回调的总和
- java - 在 JSP 中根据从数据库中选择的值更改表
- google-apps-script - 类 ColumnChartBuilder 示例不起作用
- r - 如何插入过去的值来代替缺失的月份值?
- jbpm - 由于 H2 db 错误,默认业务应用程序无法正常工作
- .net - 外部项目引用不会复制到输出目录
- php - Laravel 基于 if 语句的更新