在两个字符串之间获得结果而不在结果中包含它们?

时间:2014-02-22 13:13:57

标签: c++ regex

我们如何才能获得source=""之间的结果(在这种情况下:192.168.10.10:any) 使用rexEx?

<rule source="192.168.10.10:any" destination="any:any" protocol="UDP"/>

3 个答案:

答案 0 :(得分:1)

我不知道它是如何在c ++上写的,但正则表达式是:

<rule source="([^"]*)"

答案 1 :(得分:0)

您可以这样做:

source="([^"]*)"

Demo

答案 2 :(得分:0)

C++中,您可以使用

string s = "<rule source=\"192.168.10.10:any\" destination=\"any:any\" protocol=\"UDP\"/>";

const regex r(".*\"(.*)\" destination.*");  
smatch sm;

string result;
if (regex_search(s, sm, r))
    result =  sm[1];

这会给你:

result = "192.168.10.10:any"

此处提供完整代码和实时演示:http://coliru.stacked-crooked.com/a/c654bb7cf4f34b93