值不以字符开头的键值的正则表达式

Regex for key value with value not starting with a char

我正在使用正则表达式来匹配以下格式的键值对。我的问题是我想排除以字符 { 开头的值。 我需要对正则表达式进行非常严格的限制。

我的正则表达式:

^\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*$

如果'values'可以有空格,你可以用这个代替:

^\s*(?<nodename>\w+)\s*(?<nodevalue>[^{}\r\n,]*),?\s*$