私は正規表現グループのキャプチャを使用して、bashのCURLコマンドのすべてのヘッダを取得しようとしているが、私はそれだけで1つのグループ内のすべてのヘッダーをつかんだ問題を抱えている(別なぜ私はそれが起こっているのか正確にはわからないグループ)。正規表現グループとのCURLから個々のヘッダを取得
のbash:
curl '<url>' -H 'origin: <url>' -H 'accept-endocing: <...>' -H 'accept-language: <...>' <continues with more headers> --data '<...>'
、それは他のヘッダと続きます。
コード:
var rawBash = RawBash.Text;
var headerPattern = @"\-H[\s][\']{1}(.+)[\']{1}";
var headers = Regex.Match(rawBash, headerPattern);
私はtested the pattern hereをしましたし、それが「11のキャプチャ」と言うと、「正しく」私は撮影したいグループを示しますが、私は、コードをデバッグするとき、それは2グループが捕獲されたことを示し、 :
- 全体のカールが始まる最初の "-H" で始まる全体CURL "起源:"
何が起こっているのですか?私は正規表現が(.+)
を取り、それが[\']{1}
'
ため、試合(.+)
に当たったときに終了していない推測している...しかし、どのように私はそれがグループ内の個々のヘッダをキャプチャするのですか?
私はいくつかのC#RegExチュートリアル/説明を読み込もうとしましたが、私が探しているものを見つけることができませんでした(または私が正しい言葉で探しているものを説明していません)。
EDIT:グループは今([^\']+)
代わりの(.+)
ある
var headerPattern = @"\-H[\s][\']{1}([^\']+)[\']{1}";
お知らせ:文字通り秒投稿した後、私は、このパターンをしようとする考えを持っていました。それは今私が望むように働いています。
また、私はRegex.Match(...)
を使用しています、そして、それはすべての一致を得るためにRegex.Matches(...)
でなければなりません。
しかし、私はまだまだ立っています。どのようにして、ある時点でグループキャプチャを終了できますか?私は同様の状況だったと信じているところで、forward lookup
という用語を使っている友人を思い出していますが、実装する方法はわかりません。あなたが見ている何
すばらしい、返信いただきありがとうございます!私が正しく理解しているならば、 '? 'は基本的に前の' 0 + '/' 1 + 'に' 0 || 1'を実行して最小の一致を保証するので、怠惰です。 – Daevin
'?'は怠惰な繰り返し文字を行うための構文です - http://www.regular-expressions.info/repeat.html –