regex - 值不以字符开头的键值的正则表达式
问题描述
我正在使用正则表达式来匹配以下格式的键值对。我的问题是我想排除以字符 { 开头的值。我需要对正则表达式非常严格。
我的正则表达式:
^\s*(?<nodename>\w+)\s*(?<nodevalue>.*)$
例子:
callingLineId {
pid xxx,
msisdn "xxx"
},
callingLineIdGSM 'xxxx'H,
portNumber xxxx,
mser {xxx},
xser {},
ppPser {xxx-pp},
cmReferenceNr xxx,
它不能匹配以下行:
callingLineId {
mser {xxx},
它只需要匹配以下行:
portNumber xxxx,
msisdn "xxx"
我在 regex101 上的项目: https://regex101.com/r/lvzyUj/1]
解决方案
这应该可以解决问题
^\s*(?<nodename>\w+)\s*(?<nodevalue>[^{}\s,]*),?\s*$
如果“值”可以有空格,您可以使用它来代替:
^\s*(?<nodename>\w+)\s*(?<nodevalue>[^{}\r\n,]*),?\s*$
推荐阅读
- api - Rails 6:版本控制 API 时没有方法错误
- javascript - 调用节点模块中的类中的函数时获取“无法读取未定义的属性”
- bash - Gitlab-CI CE 执行器 /usr/bin/bash:第 113 行:git:找不到命令
- ksh - KSH - 在参数扩展中请求“\n”替换的示例
- sql - 过滤行以返回确切的关系
- flutter - 'package:splashscreen/splashscreen.dart' 是遗留的,不应导入到空安全库中
- python-3.x - 将 py 文件转换为 exe 时 - zsh: command not found: pyinstaller
- ios - 如何将非项目 doc 文件添加到 cocoapods 工作区
- python-3.x - 关于正确实现带矢量输出端口的 LeafSystem 的困惑
- java - 如何使用java中的调用方法更改整数值?