我正在尝试解析类似html的格式以在C ++应用程序中使用。格式如下:
< item1="1" item2="2" item3="3" ... />
我发现工作的表达方式是这样的:
((?<=item1=\").*?(?=\"))|((?<=item2=\").*?(?=\"))|((?<=item3=\").*?(?=\")) --- etc.
这成功捕获:
{1, 2, 3, ...}
虽然这可能很广泛,但我最多只能使用正则表达式,这似乎可以解决问题。我遇到的问题是,当字符串为空时,如“”,表达式也将从结束引号捕获到下面的开始引号。例如:
< item1="" item2="2" />
将被捕获为:
{ , item2=, 2}
我想找到一种方法将捕获组限制在引号内部。
感谢。
编辑1:我还需要保留在引号中包含空格的能力。
答案 0 :(得分:0)
你的正则表达式正在寻找包含空格的任何字符\S
。您需要更改它以查找任何非空白字符curry
(这是PCRE,不确定这是否是C ++使用的引擎)。
答案 1 :(得分:0)
(?<=\=\")[^\"]*
这个可行,你只需要在"
之后匹配所有不是="
的字符