【发布时间】:2014-07-22 21:06:31
【问题描述】:
我有一个如下所示的输入字符串:
level=<device[195].level>&name=<device[195].name>
我想创建一个正则表达式来解析每个 <device> 标签,例如,我希望从我的输入字符串中匹配两个项目:<device[195].level> 和 <device[195].name>。
到目前为止,我对这个模式和代码有一些运气,但它总是将两个设备标签作为一个匹配项找到:
var pattern = "<device\\[[0-9]*\\]\\.\\S*>";
Regex rgx = new Regex(pattern);
var matches = rgx.Matches(httpData);
结果是matches 将包含一个值为<device[195].level>&name=<device[195].name> 的结果
我猜一定有一种方法可以“终止”该模式,但我不确定它是什么。
【问题讨论】:
-
没有时间给出完整的答案,但关键是非贪婪匹配。在 * 之后放置
?以使其匹配最小可能(非贪婪)而不是最可能(贪婪)。