Получать результат между двумя строками, не включая их в результат?

0

Как мы можем получить только результат между source=" and " (в данном случае: 192.168.10.10:any) с использованием rexEx?

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

Теги:

3 ответа

1

Я не знаю, как это писать на c++, но регулярное выражение:

<rule source="([^"]*)"
  • 0
    но результатом должна быть только строка, которая между двумя заданными строками, не считая две строки themselvs
  • 0
    @ user2216190 Что вы подразумеваете под 2 заданными строками?
0

Вы можете сделать что-то вроде этого:

source="([^"]*)"

Demo

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню