2016-11-19 3 views
-1

Ich versuche, durch eine Reihe von Code-Dateien zu lesen, um alle Parameter in einer bestimmten Funktion abgerufen werden. Ich lese die Dateien in einen String einen nach dem anderem, ich dachte ich regulären Ausdruck mit einem Muster wiePush Wildcard-Element des regulären Ausdrucks in ein Array

"functionName\(.*[\),]" 

verwenden könnte, wo es die Funktion & eine Überlastung. Der erste Parameter ist immer ein macro'd Zeichenfolge, und ich möchte diese Platzhalter Elemente zu einem Array hinzuzufügen, so dass, wenn es

findet, wird
functionName(ARGUMENT_1) or functionName(ARGUMENT_1, ....) 

ARGUMENT_1 zum

Dank Array hinzugefügt werden

Antwort

0

Funktionen mit nur einem Argument werden erfasst:

\w+\((\w+)\) 

Dies ist, wie Sie es in Python implementieren würde. Sie können Port diese Logik zu C++

import re 

pattern = "\w+\((\w+)\)" 
text = """functionName(ARGUMENT_1) or functionName(ARGUMENT_1, ....) 
functionName(ARGUMENT_2) or functionName(ARGUMENT_2, ....)""" 
a = re.findall(pattern,text) 
print a 

Ausgang:

['ARGUMENT_1', 'ARGUMENT_2'] 

Demo auf Regex101 https://regex101.com/r/cKTn4Q/2

+0

@AlanMoore Wie hast du das gemacht? – MYGz

+1

Sie meinen, wie habe ich Python-Code-Highlighting erzwingen? Schauen Sie [hier] (http://stackoverflow.com/editing-help#syntax-highlighting). (Über die Schaltfläche Hilfe in der oberen rechten Ecke des Bearbeitungsfelds.) Leicht geheimnisvoll, aber vollständig dokumentiert. : D –

+0

@AlanMoore Yeah :) Ich habe versucht, die Schnur wie eine Schnur aussehen zu lassen, aber konnte es nicht tun. Also lass es so: P. Danke für den Tipp! :) – MYGz

Verwandte Themen