2016-04-27 5 views
-1

Es gibt eine Zeichenfolge (Eingabe von stdin) sagen inputString.Wie verwendet man eine Variable in Regex in C++?

Was ich tun möchte, ist eine bestimmte Regex übereinstimmen, die einen Teil dieser Variablen enthält. zum Beispiel, wenn Eingabezeichenfolge ist stackoverflow, würde Ich mag stackoverflo[a-z] übereinstimmen oder sagen stack[a-z]overflow (dh ersten 5 Zeichen, einige einzelne Zeichen und Rest-Eingang)

Wie mache ich das? Ich denke, wahrscheinlich muss ich zur Laufzeit eine andere Zeichenfolge generieren, bin mir aber nicht sicher, wie ich das machen würde.

+0

Was _exactly_ wollen Sie? Möchten Sie eine Regex erstellen, die mit _yy_ Teil des 'inputString' oder dem spezifischen übereinstimmt? – hyst329

+0

Schauen Sie sich an, was ['std :: string'] (http://en.cppreference.com/w/cpp/string/basic_string) und [' std :: stringstream'] (http: //en.cppreference .com/w/cpp/io/basic_stringstream) bieten Ihnen die Extraktion von Teilstrings und die Erstellung von Strings. Dann komm zurück zu SO, wenn du nicht weiterkommst. – StoryTeller

+0

@ hyst329 Ein bestimmter Teil der Zeichenfolge –

Antwort

3

Sie verwenden nur normal std::stringinsert, erase, substr, Verkettung ....

std::string regex_string = inputString.substr(0, inputString.size() - 1) + "[a-z]"; 
... 
string regex_string = inputString; 
regex_string.insert(5, "[a-z]"); 

Sie müssen entscheiden, wie Sie die Indizes, bei denen ausrechnen zu kopieren, löschen oder einzufügen.

Sobald Sie die regex_string Sie wollen, liefern sie nur auf die regex Bibliotheksfunktionen ...

std::regex re(regex_string); 
std::smatch match; 
if (std::regex_search(my_string_to_match_against, match, re)) ... 
Verwandte Themen