Ich versuche, alle Header eines bash CURL-Befehls mit RegEx-Gruppenerfassung zu bekommen, aber ich habe ein Problem, wo es nur alle Header in einer Gruppe (und anderen) greift Gruppe, die ich nicht genau weiß, warum es passiert).Erhalte individuelle Header von CURL mit Regex Group
Die bash:
curl '<url>' -H 'origin: <url>' -H 'accept-endocing: <...>' -H 'accept-language: <...>' <continues with more headers> --data '<...>'
und es geht mit anderen Header auf.
Der Code:
var rawBash = RawBash.Text;
var headerPattern = @"\-H[\s][\']{1}(.+)[\']{1}";
var headers = Regex.Match(rawBash, headerPattern);
Ich habe tested the pattern here und es sagt, „11 Captures“ und ‚korrekt‘ bezeichnet die Gruppen I erfasst werden sollen, aber wenn ich den Code debuggen bedeutet dies, dass zwei Gruppen aufgenommen wurden :
- die gesamte WELLUNG mit dem ersten "-H"
- die gesamte WELLUNG beginnend mit dem Start "Herkunft:"
Was passiert? Ich nehme an, die Regex nimmt die (.+)
und nicht beendet, wenn es die [\']{1}
trifft, weil '
entspricht (.+)
... aber wie mache ich es erfassen jeden einzelnen Header in einer Gruppe?
Ich habe versucht, ein paar C# RegEx Tutorials/Beschreibungen zu lesen, aber ich konnte nicht finden, wonach ich suche (oder beschreiben, was ich in der richtigen Formulierung suche).
EDIT: Buchstäblich Sekunden nach der Einlieferung hatte ich die Idee, dieses Muster zu versuchen:
var headerPattern = @"\-H[\s][\']{1}([^\']+)[\']{1}";
Beachten Sie die Gruppe jetzt ist ([^\']+)
statt (.+)
. Es funktioniert jetzt so, wie ich es möchte.
Auch ich benutze Regex.Match(...)
, und es sollte Regex.Matches(...)
sein, um alle Übereinstimmungen zu erhalten.
Aber ich denke, die Frage steht irgendwie noch; Wie kann jemand eine Gruppenaufnahme an einem Punkt beenden? Ich erinnere mich an einen Freund mit dem Begriff forward lookup
in dem, was ich glaube, war eine ähnliche Situation, aber ich habe keine Ahnung, wie zu implementieren.
Super, danke für die schnelle Antwort! Wenn ich es richtig verstehe, zwingt das '?' Faul, weil es im wesentlichen '0 || 1 'auf dem vorhergehenden' 0 + '/' 1 + 'ausführt, um die minimale Übereinstimmung sicherzustellen? – Daevin
das '?' Ist nur die Syntax für eine Lazy Repeating Charakter - http://www.regular-expressions.info/repeat.html –