Witam,
chcę odczytać coś z takiego tekstu "<abag>to chce<ewt>"
to chcę ma zostać wypisane.
Zrobiłem coś takiego ">(.*?)<"
ale to zawsze wpisze mi ">to chce<"
a ja chcę ten tekst bez tych znaczków "<" i ">"
proszę o pomoc
Witam,
chcę odczytać coś z takiego tekstu "<abag>to chce<ewt>"
to chcę ma zostać wypisane.
Zrobiłem coś takiego ">(.*?)<"
ale to zawsze wpisze mi ">to chce<"
a ja chcę ten tekst bez tych znaczków "<" i ">"
proszę o pomoc
Więc wykorzystaj to co łapiesz w grupę - matches. W \1 będzie dokładnie do czego oczekujesz.
możesz trochę jaśniej, bo nie czaję, to co łapię w grupę to jest między nawiasami, to dlaczego wypisuje mi też te znaczki, które muszę umieścić żeby wiadomo było że chcę tekst, który jest między nimi.
??
Pokaż lepiej kod. Wynikiem tego wyrażenia powinny być 2 stringi: \0 zawierający całość dopasowanego tekstu (włącznie z ><) oraz \1, zawierający tylko to co jest w pierwszej grupie (czyli w nawiasach). Prawdopodobnie odwołujesz się do całego dopasowanego tekstu zamiast do jednej z grup.
kod:
#include <boost/algorithm/string.hpp>
#include <boost/algorithm/string/regex.hpp>
#include <iostream>
#include <boost/foreach.hpp>
#include <fstream>
using namespace std;
using namespace boost;
int main()
{
string kod;
ifstream plik;
plik.open("dane.txt", ios::out);
if(plik.is_open())
{
while(!plik.eof())
{
kod.push_back(plik.get());
}
}
else cout << "dupa\n";
string kod2="<abag>to chce<ewt>";
//cout << kod << endl;
const static regex email_regex(
""
">([^<].*?[^>])<"
""
);
vector< string > emails;
typedef find_iterator< string::iterator > string_find_iterator;
for ( string_find_iterator it =
make_find_iterator( kod2, regex_finder(email_regex) );
it != string_find_iterator(); ++it )
{
emails.push_back( copy_range< std::string >( *it ) );
}
BOOST_FOREACH( const string& email, emails ) cout << email << endl;
system("pause");
}
mam taki kod źródłowy i chcę wydobyć pogrubione elementy,
próbowałem "<span class="TITLU_MENIU">([^<.?>].?)</span>" ale wypisuje całość
proszę o pomoc
Manchester United</td>
2</td>-</td>
Everton
1</td></tr>
Newcastle United</td>
2</td>-</td>
Derby County
2</td></tr>
22-12-2007</td></tr>
Arsenal</td>
2</td>1
jest coś takiego (lookahead, lookbehind).
więc można tak:
regex email_regex(
"(?<=>)([^<].*?[^>])(?=<)"
);
IMHO ty bardziej potrzebujesz parsera XML a nie wyrażeń regularnych.