regex - 匹配匹配字符串的最后一个“:”的子字符串
问题描述
我想从与此模式匹配的字符串中获取子字符串:
:((?![{\[\-\d])([^,}]+))
match all string value.
例如:
altitude{altitudeValue:52420,altitudeConfidence:alt-002-00}}},
highFrequencyContainer:basicVehicleContainerHighFrequency:
{heading{headingValue:3601,headingConfidence:127},speed{speedValue:0,speedConfidence:127},
driveDirection:unavailable
我与此字符串上方的模式匹配:
:alt-002-00
:basicVehicleContainerHighFrequency:{heading{headingValue:3601
:unavailable
但我想要:
:alt-002-00
NO: **:3601** <--match from last ":" to end of previous match (is possible with regex?) only if is a
string.
YES: if was **:hello** <-match because is a string
:unavailable
我想从最后一个“:”匹配到上一个匹配的结尾(可以使用正则表达式吗?)。如何改变我的模式规则?:((?![{\[\-\d])([^,}]+))
感谢和问候
解决方案
从最后一个匹配:
可以通过添加:
到否定字符类来完成。要获得子匹配,您可以使用单个捕获组而不是 2 个。
:((?![{\[\d-])[^:,}]+)
解释
:
从字面上匹配(
捕获组 1(?![{\[\d-])
负前瞻,断言直接在右边的不是{
[
数字或-
[^:,}]+
匹配 1+ 次以外的任何字符:
,
}
)
关闭组 1
推荐阅读
- ios - 将图像转换为 pdf 但不保存在文件中
- shell - 使用 shell 脚本读取 html 文件中的值
- r - 使用 R 估计 NetCDF 数据的每月气候学
- symfony - symfony 2.8 如何获取具有当前登录用户认证的多个扇区列表
- javascript - 错误:
属性 y1:预期长度,“{{iy}}”。错误显示在 chrome 控制台中,但 svg 工作正常 - javascript - Vuex 更新数组作为对象的值
- php - 带有 PHP 的 Youtube Scraper
- javascript - chrome 扩展代码来获取当前活动的标签 url 并检测其中的任何 url 更新
- java - 是否可以说服 Swing 缓存使用jTable 单元格中的标记加载的图像,而不是在每次重绘时重新下载图像?
- ibm-mq - 连接到云上的 IBM MQ 的问题