2016-07-22 3 views
-1

私はフォームのテキストボックスを持っています。私はテキストボックスにパス(例:D:\ temp)を書きたいと思っています。その後、このパスを作成します。 この正規表現を使用しようとしましたが、動作していません!私は最初の手紙を上にしたいが働いていない。また、私は文字列に ":"と "\"を1回だけ入れておきたい。 「:\」小文字の文字列を挿入したい @[A-Z] [:] [\] [a-z] $ " Sugestionsがありますか? ありがとう!正規表現が動作しないC#

+0

は、あなたが作業を試してみましたが、イマイチいるかを示すです。 – Takarii

+1

[a-z]は小文字を1文字しか使用できません。 1つ以上を許可する場合は+を後に追加し、ゼロ以上の場合は*を使用します。そして、あなたは現在、区切り文字を区切っているので、バックスラッシュを2番目の区切りで区切る必要があります。 – juharr

+1

"それは機能していません"とはどういう意味ですか?うまくいかなければならないことは何でしょうか?例を挙げてください! –

答えて

0

[A-Z]:\ [a-z] +この正規表現を試してください。 次にしてみてください^ [AZ]:\\ W + $

あなたのコードでは、このようなあなたの正規表現を宣言します。これにより

string myRegex = @"[A-Z]:\\[a-z]+" 

、あなただけのDのようなパス検証:\ Tempには、なく、D:\一時\ TEMP2

2

私はあなたが探している正規表現は

@"^[A-Z]:\\[a-z]+$" 

であると信じて、あなたの持つ2つの問題があります。まず、バックスラッシュを区切りませんでした。つまり、区切り文字は区切り文字で、これはあなたが正確に1つを探していることを意味しました。 2番目の問題は、バックスラッシュの後に1つ以上の文字を探したいので、+を使用する必要があるということです。最後に、コロンとバックスラッシュをグループにする必要はありません。

+0

質問に基づいて、私はこれが求められているとも信じていますが、OPは、複数のネストされたパスディレクトリ。たとえば、D:\ temp \ otherは一致しません。 – fiveclubs

+1

@fiveclubsファイルが拡張子を持っていてドットと一致しないためファイルにマッチしません。大文字と小文字の混在したディレクトリやファイル名、またはアンダースコアや数字のようなアルファベット以外の文字。 – juharr

0

まず、合格するか失敗するかの例が参考になります。

第2に、ExpressoやRegex Fiddleのように、何が起こっているのかを説明する正規表現を書くツールを使用します。

今、質問に。ここでは例/^[A-Z]:\\[a-z]+$/gm http://refiddle.com/refiddles/5792227f75622d3df0480300

  • ^だ - それはライン
  • の開始と一致するには、[AZ]は - 単一の大文字
  • に一致します - コロン
  • \と一致する - にバックスラッシュをエスケープ
  • バックスラッシュと一致[AZ] + - ケース文字(+ 1又は 回以上を意味する)
  • と一致
  • $ - 行の末尾にマッチ

EDIT:フォルダの最初の文字を確実にするために追加されましチェックは大文字/^[A-Z]:\\[A-Z][a-z]+$/gm http://refiddle.com/refiddles/5792259075622d3df05e0300

+0

「D:\ one \ two」のような複数のフォルダが必要な場合は、これに変更を加える必要があります...また、小文字のフォルダ名が必要なのでしょうか? – CaffGeek

+0

はい..小文字...しかし、フォルダ名に最初の文字を上にする必要がある場合はどうなりますか?私は何をすべきか? –

+0

次に、これを正規表現に追加する必要があります。このような小文字の前には、 '/^[AZ]:\\ [AZ] [az] + $/gm'という小文字のチェックの前に大文字のチェックを1つ追加しました...現在、この正規表現は 'D:\ Fo'を渡しますが、大文字と1つ以上の小文字を必要とするため、' D:\ F'に失敗します。 '+'を '*'に変更すると、それは0以上の小文字に変更されます – CaffGeek