Regular Expression用于在两个字符串之间提取文本

时间:2018-01-20 03:01:26

标签: regex

我正在尝试解析类似html的格式以在C ++应用程序中使用。格式如下:

< item1="1" item2="2" item3="3" ... />

我发现工作的表达方式是这样的:

((?<=item1=\").*?(?=\"))|((?<=item2=\").*?(?=\"))|((?<=item3=\").*?(?=\")) --- etc.

这成功捕获:

{1, 2, 3, ...}

虽然这可能很广泛,但我最多只能使用正则表达式,这似乎可以解决问题。我遇到的问题是,当字符串为空时,如“”,表达式也将从结束引号捕获到下面的开始引号。例如:

< item1="" item2="2" />

将被捕获为:

{ , item2=, 2}

我想找到一种方法将捕获组限制在引号内部。

感谢。

编辑1:我还需要保留在引号中包含空格的能力。

2 个答案:

答案 0 :(得分:0)

你的正则表达式正在寻找包含空格的任何字符\S。您需要更改它以查找任何非空白字符curry(这是PCRE,不确定这是否是C ++使用的引擎)。

答案 1 :(得分:0)

(?<=\=\")[^\"]*

这个可行,你只需要在"之后匹配所有不是="的字符