regex - 正则表达式:获取键值对格式的值
问题描述
我有以下字符串:
"
key1: fkdfjdkfkdfjkdfkjdkfjdfkjdfkdjfkdjfkdfjkdfdkfjkdf
key2: dskfjdfjdkfkjdfkdjfkdfjdfkdfkdkjfkdfjkdf
key3: sdfsdfasdfadfs
asdfadsfsdfasdfadsfdf
key4: sdfjdsfhhdjfhsdjfsdfh
skdfjdsjkfjds
"
什么是仅捕获键值的有效正则表达式?
解决方案
如果您使用的是 PCRE 引擎,则以下正则表达式可以解决您的问题:
/(?:key\d+: )(.*?)(?=\nkey\d:|$)/gs
解释:
- (?:key\d+: ) - 匹配密钥。
- (.*?) - 捕获值。
- (?=\nkey\d:|$) - 找到下一个键或字符串结尾时停止捕获值。
- gs标志 - 全局标志启用多个捕获,单行标志使点运算符能够匹配值中的新行。
推荐阅读
- javascript - 如何在闪亮的 DT 数据表中选择最大单元格数
- c# - 按多个属性和条件对对象列表进行排序和分组
- javascript - 刷新令牌时,后续 API 调用会传递陈旧的令牌
- javascript - 调试反应:断点未按预期在 componentDidUpdate 中停止
- python - 从Arduino的串口读取实时数据到python脚本
- azure-devops - 文件更新部署,新文件被忽略
- java - 检查类名不应包含特定文本
- amazon-web-services - 使用 codebuild 在 aws 上构建 .Net 核心项目
- r - 是否可以将 Shiny 应用程序直接嵌入到 bookdown 文档中?
- javascript - 为什么drawImage函数以黑色绘制我的彩色png图像?