正则表达式用于键值,其值不以字符开头

时间:2018-06-29 13:33:07

标签: regex pcre

我正在研究一种正则表达式,以匹配以下格式的键值对。我的问题是我想排除以字符{开头的值。 我需要对正则表达式非常严格。

我的正则表达式:

  

^\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]

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题

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

如果“值”可以有空格,则可以改用它:

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