我正在研究一种正则表达式,以匹配以下格式的键值对。我的问题是我想排除以字符{开头的值。 我需要对正则表达式非常严格。
我的正则表达式:
^\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]
答案 0 :(得分:0)
这应该可以解决问题
^\s*(?<nodename>\w+)\s*(?<nodevalue>[^{}\s,]*),?\s*$
如果“值”可以有空格,则可以改用它:
^\s*(?<nodename>\w+)\s*(?<nodevalue>[^{}\r\n,]*),?\s*$