Problem z Regex

0

Witam, mój problem wygląda następująco:

Powiedzmy że mam dany tekst

samochod,
asamochod,
samochoda
samochod;
samochod,
,tramwaj,
btramwaj,

Mam wektor w którym trzymam między innymi takie stringi jak samochod i tramwaj. Moje zadanie polega na znalezieniu: (znak nie litera)(wyraz z wektora)(znak nie litera), czyli zlapie "samochod,", ale nie zlapie "asamochod,", i zamianie tego np na "rower". I tu pojawia się problem: używając swojego wzorca do zamiany (regex_replace), zamieniam powiedzmy "samochod," w "rower", a chcialbym zamieniac sam ten wyraz w srodku ("samochod", "," ma zostac). Próbowałem zmieniać wzorzec i jakos wyciagąć daną grupę ale mi nie wychodziło, siedziałem nad tym sporo i juz nie mam pomysłu, zwracam sie do was o pomoc.

fragment kodu:

string bum = "rower";
regex wzorzec("([^a-z])"+(zmienne.at(i))+"([^a-z])");
smatch wynik;

if(regex_search( pomoc, wynik, wzorzec ))
{
    pomoc = regex_replace(pomoc, wzorzec, bum);
}
0

http://4programmers.net/Forum/Kosz/215635-regex_search_regex_replace??? - ten wątek został wyrzucony za temat. A ten wątek ma jeszcze gorszy.
W dodatku, mimo że bym chciał, nie mam pojęcia co chcesz w sumie uzyskać, bo tekst dość chaotyczny a fragment kodu dość bezsensowny.

0

Mam plik z tekstem:

samochod,
asamochod,
samochoda
samochod;
samochod,
,tramwaj,
btramwaj,

Chce zamienić wszystkie wyrazy "samochod" i "tramwaj" na "rower". Czyli chce otrzymać coś takiego

rower
asamochod,
samochoda
rower;
rower,
,rower,
btramwaj,

Chce zamienić wyraz tylko wtedy gdy przed nim lub po nim nie ma litery. Dlatego też zrobiłem wzorzec:

regex wzorzec("([^a-z])"+(zmienne.at(i))+"([^a-z])");   //gdzie zmienne.at(i) zawiera rower/samochod

Wzorzec ten wyłapie mi te wyrazy które chce czyli:

samochod,
samochod;
samochod,
,tramwaj,

Teraz używając regex_replace chcę zamienić wyrazy samochod/tramwaj na rower. I tu pojawia się problem: używając

pomoc = regex_replace(pomoc, wzorzec, bum);

zamieniam cale wyrażenie na inny wyraz, a chce zamienić tylko środek tego wyrażenia czyli:

"samochod;" zamienić w "rower;" (a nie "rower")

1 użytkowników online, w tym zalogowanych: 0, gości: 1