regex-lookarounds - 如何使用负后向排除分数?
问题描述
我有一个需要解构为数量(数字)和单位(字符串)的测量列表。像
1 gal.
500lbs
none
2.25gal
4feet twine
2lbs regular and 2lbs lite
一切都很好,很好用\d+(\.\d+)?
,但现在我有一小部分加入:
3/4gal
我需要从这个搜索中排除分数,以便我可以单独处理它。我3
通过插入负前瞻成功排除了分子 ( ) \d+(?!\/)(\.\d+)?
,但我不知道如何排除分母 ( 4
)。我想我应该使用负面的lookbehind,但我不知道如何。 \d+(?!\/)(?<!\/)(\.\d+)?
并且\d+(?!\/)(\.\d+)?(?<!\/)
仍然匹配4
.
谢谢!
解决方案
在这样的结构\d+(?!\/)(?<!\/)(\.\d+)?
中,后(?<!\/)
视总是正确的,因为您之前唯一可以匹配(而不是断言)的是数字。
您还可以排除/
数字部分左侧的 a,并在匹配小数部分后添加前瞻。
(?<!/)\d+(?:\.\d+)?(?!/)
解释
(?<!/)
Negative lookbehind,直接断言当前位置左边不是/
\d+
匹配 1+ 个数字(?:\.\d+)?
匹配一个可选的.
和 1+ 位数字(?!/)
负前瞻,直接断言当前位置右边不是/
推荐阅读
- date - 添加文件夹名称以输出 Pig Latin
- xcode - 选择器“javaScriptRuntimePointer”没有已知的实例方法
- c# - ASP.Net Core - 通过 PowerBI 和 Azure AD 访问的 Web API
- macos - CLion (C++):无法使用 SFML 打开图像
- python - 如何在 tkiner 和 sqlite3 中进行实时搜索?
- requirejs - requirejs - 将全局变量定义为 amd 模块
- pdf - 如何在 iText7 中使用文本超链接创建 PDF/UA
- centos7 - CentOS 7:“free”命令未显示 LVM 交换扩展
- node.js - mongoose 聚合中“for”循环的副本
- python - 努力了解为什么我的井字游戏 minimax 游戏没有选择最佳移动 - python