2
我遇到RegEx
问题。我收到一个需要解析为NameValueCollection
的字符串。 ParseQueryString不起作用,因为(1)字符串是空格分隔的,(2)值可以包含空格。我无法控制输入。正则表达式帮助,解析成NameValueCollection
例字符串:可以包含空格或连字符
-AppCode='MyApplication' -AppVers='V-2016.0 Debug' -MachUuid='2C850880-34FD-12F3-A06B-7336B0C4BC55' -MachName='ABEZG-F05507' -Language=2055
字符串值在单引号。整数值不包含在引号中。
我已经试过:
[\w\-]+=[\w\s\']+(?![\w\-]+=[\w\s\'\-])
但不允许连字符的值
[\w\-]+=[\w\s\'\-]+(?![\w\-]+=[\w\s\'\-])
这种做法,但它超出了Spac e字符。
理想的输出将是:
-AppCode MyApplication
-AppVers V-2016.0 Debug
-MachUuid 2C850880-34FD-12F3-A06B-7336B0C4BC55
-MachName ABEZG-F05507
-Language 2055
遗憾的是这些年后,我仍然无法弄清楚RegEx
。任何帮助,将不胜感激!
惊人的响应速度!谢谢!另一件事,我没有意识到RegEx有一个特定的.Net“味道”。我必须修改你的答案([\ w - ] +)=(?:'([^'] *)'|(\ S +))才能在.Net中工作。下次我会在这个问题中说清楚。 – Greg
这不是一个问题:在.NET中使用*命名捕获组*。我会修改答案。 –
我完全重新解决了.NET的问题。很高兴它对你有效。如果我的回答对你有帮助,请考虑upvoting(参见[如何在堆栈溢出?](http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow)) 。 –