2011-06-21 18 views
1
parsing "\(|.*?)|)" - Too many)'s. 

これを書いたとき、私はこのエラーをrecevingています...解析 ")(| | *。?)" - が多すぎ)の

private static Regex resourceTextsREGEX = new Regex(@"\(|.*?)|)", RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.IgnoreCase); 

私は、これら2つの正規表現をしたいです物事1- {テキスト} 2- |テキスト|私はそれらの試合を取得し、何かに置き換えることができるようにしたい...誰かが助けてくれる?

+5

あなたは7ヶ月間SOを使用していて、以前の15の質問をしました。尊重すると、あなたは正しいものを今までにフォーマットするべきです。質問編集ボックスの右側にある**書式設定の方法**ボックス、その下のプレビュー、およびその上の** [?] **リンクを参照してください。 –

+1

あなたのメッセージには、この言語は何であり、「8時間、26分前」とは何ですか? –

答えて

1

をお試しください

[{|](.*?)[|}] 

は、それがhere on Regexr

ですから、一致させたい参照してください
1. {テキスト}
2 |テキスト|

私の正規表現は、最初

[{|]いずれか{または|

そして、怠惰な試合に(.*?)

を使用してテキストを取得し、最後に終了文字があるキャプチャグループが来るで一致している

一致する[|}]のいずれかを意味する}または|

+0

このパターンは、 "{Text |"と "| Text}"を入力します。 – smackcrane

2

あなたはそれが正規表現のどの味と述べていないが、オッズは()演算子をグループ化していることはかなり高い(ない)

6

をエスケープしています。あなたの式は、ミスマッチした括弧を持っています

 @"\(|.*?)|)"

あなたはそれで実際)を含むことがグループを作成しようとしている、または

している場合は、...

 @"(|.*?\)|)" 
    ^ ^-- escape 
     +-- no escape

を意味している場合があります

 @"\(|.*?\)|\)" 
    ^ ^^ 
     +-----+--+--- escapes everywhere

...グループを作成しようとしているのではなく、括弧と一致させようとしているならば。

0

あなたはこのような何かをしたいが必要になる場合があります一致させるために何をしたいあなたの例によると、これは

static Regex resourceTextsREGEX = new Regex(@"({)([^}{\|]+)(})|(\|)([^}{\|]+)(\|)", RegexOptions.Singleline | RegexOptions.Compiled | RegexOptions.IgnoreCase); 

これは{text}|text|{}||でないにマッチします{text|

0

正しく、あなたは "{ここのテキスト}"と "|ここのテキスト|"にマッチする正規表現を要求しています。

(\{.*?\}|\|.*?\|)トリックを行う必要があります。中括弧の中にある何か(貪欲ではない量指定子で)、または一組の縦棒の内側に何か(貪欲でない量指定子)をマッチさせて、マッチを見たり置換したりすることができます。

もちろん、「{}」や「||」と一致させたくない場合は、それぞれのアスタリスク(*)をプラス(+)に置き換えることができます。

関連する問題