Wyrażenie regularne.

Wyrażenie regularne.
KO
  • Rejestracja:około 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0

Witam

Próbuję rozgryźć problem wyrażenia regularnego, które ma obejmować wszystkie wyrazy, oprócz wyrazów które zawierają konkretny podciąg, np. wszystkie wyrazy bez słowa "cos".
Nie chodzi mi o rozwiązanie w stylu, wyrażenie które akceptuje wyrazy z "cos" i to zanegować w programie. Chodzi mi o negacje w samym wyrażeniu.

0

Ściągnij program do testowania wyrażeń regularnych i kombinuj :)

RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
0

\b((?!cos)\w)*\b

KO
  • Rejestracja:około 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
0
Rev napisał(a):

\b((?!cos)\w)*\b

Nie przechodzi to u mnie, do wyrażeń regularnych w C++ używam boost/regex.

RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
0
Kopiuj
#include <iostream>
#include <boost\regex.hpp>

int main()
{
	using namespace std;
	using namespace boost;

	string text = "jakies costam tam trolocostrolo lolo wyrazy 123costam";
	regex expression("\\b((?!cos)\\w)*\\b");

	sregex_iterator begin(text.cbegin(), text.cend(), expression), end;
	for_each(begin, end, [](const smatch& result) -> bool
	{
		string match = result.str();

		if(match.length() > 0)
			cout << match << "\n";

		return true;
	});
}

Wynik:

Kopiuj
jakies
tam
lolo
wyrazy
edytowany 1x, ostatnio: Rev

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.