2017-01-31 5 views
1

Ich muss das Argument einer Funktion mit einem bestimmten Namen übereinstimmen. (In diesem Fall sagen wir, der Name der Funktion, wenn function)Regex, um das Argument einer Funktion

Also im Grunde, wenn es ein Auftreten wie function(my_argument) in einer Datei, möchte ich das Argument extrahieren my_argument von ihm. (Im Grunde, was ich brauche, hier ist alles, das Argument der function() in dieser Datei übergeben zu sammeln)

Bisher habe ich mit einem regex

(([;][ ]{0,})|([ ]{1,})|(\n))function[(](([^()]*)*)[)] 

kam aber scheint es, der es nicht zu fangen, wenn die function(my_argument) ist die erste Zeile der Datei. check example in regex101.com.

Gibt es eine Möglichkeit, diese Instanz auch zu erfassen. Oder wenn es bessere Möglichkeiten gibt, dies zu tun, bin ich auch offen für Vorschläge und schätze es sehr.

+0

@RobbyCornelissen 'Funktion (sin (Theta)); Funktion (5) 'abhängig von der Implementierung könnte entweder' sin (Theta 'oder' sin (Theta)) erhalten; Funktion (5' –

+0

Probieren Sie ['(^ |;? [] + | \ n) function [(] ([^()] *) [)]'] (https://regex101.com/r/sXelqd/ 1) –

+0

@JimD ja, aber nehmen wir an, in diesem Fall wird es nicht so sein .. Nur einfache Funktion Anruf in einer Zeile. Keine komplexe Verwendung. – prime

Antwort

1

Es scheint, Sie wollen

(^|;?[ ]+|\r?\n)function[(]([^()]*)[)] 

Siehe regex demo

Einzelheiten:

  • (^|;?[ ]+|\r?\n) - Gruppe 1 Erfassung
    • ^ - Beginn der Zeichenfolge
    • | - oder
    • ;?[ ]+ - ein optionales ; mit 1+ Leerzeichen gefolgt
    • | - oder
    • \r?\n - ein Zeilenumbruch (optional gefolgt CR mit LF)
  • function - eine wörtliche Zeichenkettenfolge
  • [(] - ein Literal (
  • ([^()]*) - Gruppe 2 Capturing 0+ verkohlt andere als ( und )
  • [)] - eine wörtliche ).
+0

yep. Könnte anderen auch helfen. Danke . – prime

Verwandte Themen