2009-06-26 3 views
5

MSVS:どこで正規表現が?

だ私はMSVS 2008年に正規表現と一致しようとしているが、私はそれのために正規表現を把握することはできませんコードを持っています。Visual Studio Regex '?'

colou?r 

... colorまたはcolourにマッチする正規表現です:古典的な例を見てみましょう。これはMSVSにも一致しません。ヘルプファイルを参照すると、?が見つかりません。

これは大したことではないだろう - それは交代でエミュレートすることができます。

colo(u|)r 

はしかし、私は、「グループ化された表現は、 『)』がありません。」を取得...それは...ないています。奇妙なことに、MSVSは、これらの代替グループ(私はなぜ本当にわからない...)中括弧であります「パターンの構文エラー」

colo{u|}r 

私の全く異なるエラーを与える...これは、私はそれを見ない。 基本的に、私は?をどうやってやるのですか?私の実際の入力は、色/色と同じくらい単純ではありません。そうでなければ、私は(color|colour)でそれを偽造します。私はそれを偽造することができると思うが、それについて行くための鈍的な方法です。


さんはその後、交代を試してみましょう...

[OK]を、私はまだでも交代して、それを行うことはできません。私は次の2つの正規表現を持っています:

これらの2つの一致する行のセットは、個別に、私のテキストです。 (最初のものは、第1と一致する行の一部に一致する。)

私の入力は、通貨情報の行である:

 
BZD 084 Belize dollar 
CAD 124 Canadian dollar 
CDF 976 Franc Congolais 
CHE 947 WIR euro (complementary currency) 
CHF 756 Swiss franc 
CHW 948 WIR franc (complementary currency) 
CLF 990 Unidad de Fomento (funds code) 

(タブはWIRユーロ及び(相補的な通貨との間、例えば、あります)が、彼らはいつもそこにいない。)

論理的には、... ことが

 
^[A-Z]+\t[0-9]+\t[^\t]+ 

^[A-Z]+\t[0-9]+\t[^\t]+\t[^\t]+ 

が取得..you組み合わせるために従うべきです#[AZ] + \ t [0-9] + \ t([^ \ t] + | [^ \ t] + \ t [^ \ t] +) どういうわけか最初のセットの2番目の式に変換します。

+0

Visual Studioでregexとはどういう意味ですか?実際のどの言語を書いていますか? –

+2

@ John Rasch:彼はVisual Studioの検索/置換ウィンドウを意味します。 – Welbog

+0

@Welbog - 今は申し分ない –

答えて

4

私たち独自のJeff Atwoodはこのことについて書いています。基本的に、Visual Studioの正規表現の実装は非常に標準的ではなく、通常行われる処理を '?'で行うための簡単な方法はありません。 {colour|color}式を使用する必要があります。

+0

ありがと...交互に試してみました。編集を参照してください。 – Thanatos

0

Visual Studio findの正規表現はサポートされていませんか? MSDNのreferenceを参照してください。あなたの最善の策は、この作品、おそらく交代文字

+0

その記事はヘルプファイルと同じように見えますが、私が言及したように、ヘルプは全くありません。 – Thanatos

0

です:あなたの本当例えば

colo(u)|()r 

を、これはそれぞれの行にマッチします:

^[A-Z]+:b[0-9]+:b[^\t]+(\t[^\t]+)|() 
+1

私はあなたが "colo(u |())r"を意味すると思います。元のクエリは "一致" colouまたはrを読み取ります – Aaron

+0

両方のメソッドはVisual Studioで全く同じように動作します。自分で試してみてください。 – Greg

0

をあなたは、最長共通パスをしようとしました右?

例えば、色と色のためには、次のようになります。

colo(ur|r) 

、それは次のようになり、あなたの2つの正規表現のために:

^[A-Z]+\t[0-9]+\t{[^\t]+|[^\t]+\t[^\t]+} 
1

文書化されていない、私は文字列のことを見つけたものの"()"は空の文字列と一致します。たとえば、次のように同様に

colo(u|())r 

、部分一致を避ける、または上でタックしてくださいへの最後の空の文字列の代替を置くことを確認して、その最後のケースでは

^[A-Z]+\t[0-9]+\t{[^\t]+(\t+[^\t]+|())} 

を試してみます行末トークン '$'も使用します。