regex - 是否可以连续比较两个值并获取所需的值,但两个值都与写入的正则表达式匹配
问题描述
text = "团队祝您 4/20 快乐!13/10 恭喜..在这么多内容之后"
我只想获取评级为 13/10。我写了正则表达式
(\d+\.\d+|\d+)/(((?=10)10)|([1-9]\d+))
但它获取第一个(4/20)。这可以使用正则表达式来实现吗?
解决方案
在您的模式的这一部分中,您(?=10)10
可以省略正向前瞻,因为这表示如果右边是 10,则匹配 10。这部分[1-9]\d+
匹配 10 及以上,因此 10 已经在范围内。
您可以使用带有量词 {2}
的捕获组来重复该组。
你的模式也可以写成\d+(?:\.\d+)?/[1-9]\d+)
要获得第二组,您可以使用:
^(?:.*?(\d+(?:\.\d+)?/[1-9]\d+)){2}
^
字符串的开始(?:
非捕获组.*?
匹配任何非贪婪的字符(
捕获组\d+(?:\.\d+)?
匹配 1+ 位数字,可选匹配点和 1+ 位数字/
匹配/
[1-9]\d+
匹配 10 及以上
)
关闭捕获组
){2}
关闭非捕获组并重复 2 次
推荐阅读
- python - 如何将 python 日志记录为 Cosmos-DB 记录器?
- xcode - 运行时缺少 SwiftProtobuff.framework
- ios - Swift:隐式返回不编译?
- arrays - 从 bash 脚本中的大型 JSON 输出中提取字符串到数组中
- android - 是否可以同时使用蓝牙和 Wifi 直接发送数据?
- vhdl - 我如何做一个 8 位堆栈?
- mysql - 如何编写这个 SQL(关于日期和时间)?
- php - 如何将值发布到两个不同的 PHP 页面
- angular - 是否可以动态更改 ngbDatepicker 格式化程序?
- python - 使用 OpenCV 恢复图像以增强细节