2017-04-18 13 views
1

をチェックするために正規表現を思い付くしようとしていますI次の文字列があります-stage=buildをとのバリエーションが存在します。このような:私は、特定の文字列レイアウト

-task=do-command=ls\-ltra-working-directory=\path\to\my\folderなど

だから私は上記の例に示すように特定のフォーメーションに対して文字列をチェックできるようになる正規表現を考案しようとしています。これは私がこれまでに得たものである

-stage=hello\rtgh

は、しかし、私は\後の継続に問題がありますのようなものをキャプチャすることができるように思わ^-\w+=[A-Za-z]+\\+[A-Za-z]

。私はtghビットを検出することができません。正規表現を改善するにはどうすればよいですか?一般的には

パターンは次のとおりです。

-(letters with no space)-(letters with no space)=(any letters, numbers, * etc and a literal escape to escape spaces)

+0

多分['^ - [A-Za-z] +(?: - [A-Za-z] +)?= [^ \ s \\] *(? s \\] *)* $ '](https://regex101.com/r/6xYdC3/1)? –

+0

ありがとうございます。作品。私はこれがどのように構築されるのか見ていきます。最後の質問ですが、通常、特定の文字を禁止するにはどうすればよいのですか?たとえば、 '-'を禁止する必要がある場合、' '-stage.a = banana''を無効にしますか? – symbolix

+0

上記の正規表現が動作する場合、あなたの質問は明確ではありません:文字列中のバックスラッシュがエスケープシーケンスを構成するように指定してください(バックスラッシュは二重バックスラッシュで、 '-working-directory = \ path \ to \ my \ folder 'は実際には' -working-directory = \\ path \\ to \\ my \\ folder'でなければなりません)。とにかくその位置にドットがマッチしないので、ドットを除外する必要はありません。 –

答えて

1

は答えとしてコメントを投稿します。

:バックスラッシュをご入力し、 -<letters>一部にエスケープ記号として使用されていると仮定すると、

は、シングルまたはダブルすることができ、あなたは

^-[A-Za-z]+(?:-[A-Za-z]+)?=[^\s\\]*(?:\\.[^\s\\]*)*$ 

regex demo

詳細を参照してくださいを使用することができます

  • ^ - 文字列の開始
  • -[A-Za-z]+ - ハイフン、次いで1+ ASCII文字
  • (?:-[A-Za-z]+)? - 任意ハイフンの配列と1+ ASCII文字
  • = - 等号
  • [^\s\\]* - ゼロ以上の空白文字以外の文字と\
  • (?:\\.[^\s\\]*)* - のゼロ以上の配列:
    • \\. - 任意のエスケープシーケンス(あなたがDOTALL修飾子を使用している場合、ゼロ以上の文字の空白以外の\
  • $ - - 文字列の終わりも
  • [^\s\\]*改行文字)と一致します。
関連する問題