javascript - 为什么我的正则表达式忽略每个匹配项中的最后一个字符
问题描述
下面的正则表达式可以正常工作,只是它忽略了每个匹配项中的最后一个字符。
\d{4}\b.*?(?=[^:]\d{4}(?! ml| kg)( [A-Za-z]{2}| \d{1}-| 1H-| [A-Za-z0-9],[A-Za-z0-9]| \D{1}-)|$)
我的问题是:如何将其更新为还包括每场比赛中的最后一个字符
下面是数据示例:
https ://regex101.com/r/XRlr4Q/1
解决方案
[^:]
前瞻中的模式需要一个字符,而不是:
在匹配的前四位数字之前。
您需要在(?<!:)
那里使用lookbehind:
\d{4}\b.*?(?=(?<!:)\d{4}(?! ml| kg)(?: [A-Za-z]{2}| \d-| 1H-| [A-Za-z0-9],[A-Za-z0-9]| \D-)|$)
请参阅正则表达式演示。
推荐阅读
- python - 如何使用python连接到sqlite3数据库
- asp.net-core - Mass Transit + Azure Service Bus:使用某些类型的消息而不创建相应的主题
- javascript - 为什么我的 API JSON 响应没有显示?
- angular - Chart.js core.js:6162 ERROR 错误:“line”不是注册控制器
- .net-core - .NET 5 WPF EntityFramework 和 SQL 精简版
- c++ - 未指定 CLion 目标 - 无目标
- javascript - 如何在按钮单击时从复选框获取值到 php 数组?
- r - 多次评估 R 中的积分
- javascript - 多个请求的节点js中MySql数据更新和选择同步问题
- r - 我在 Rstudio 中找不到意外错误