我有一个输入字符串,如下所示:
level=<device[195].level>&name=<device[195].name>
我想创建一个将解析每个<device>标签的RegEx,例如,我希望从我的输入字符串中匹配两个项目:<device[195].level>和<device[195].name>.
到目前为止,我对这个模式和代码运气不错,但它总是发现两个设备标签都是一个匹配:
var pattern = "<device\\[[0-9]*\\]\\.\\S*>";
Regex rgx = new Regex(pattern);
var matches = rgx.Matches(httpData);
Run Code Online (Sandbox Code Playgroud)
结果是matches包含值的单个结果<device[195].level>&name=<device[195].name>
我猜测必须有一种'终止'模式的方法,但我不确定它是什么.
使用非贪婪量词:
<device\[\d+\]\.\S+?>
Run Code Online (Sandbox Code Playgroud)
另外,使用逐字字符串来转义正则表达式,它使它们更具可读性:
var pattern = @"<device\[\d+\]\.\S+?>";
Run Code Online (Sandbox Code Playgroud)
作为旁注,我想在你的情况下使用\w而不是\S更符合你的意图,但我离开了\S因为我不知道.