1

私が直面している実際の問題を説明しましょう。

私の SearchString が C+ の場合、以下の正規表現のセットアップは正常に機能します。ただし、検索文字列が C++ の場合、次のエラーがスローされます -

  parsing "C++" - Nested quantifier +.

このエラーを回避する方法を誰かに教えてもらえますか?

RegExp = new Regex(Search_Str.Replace(" ", "|").Trim(), RegexOptions.IgnoreCase);
4

3 に答える 3

3

プラス+は正規表現の特殊記号です。あなたはそれを逃れなければなりません。

Regex regex = new Regex(@"C+\+");
于 2013-07-21T14:55:17.017 に答える
3

まず第一に、現在の段階でここで質問するのではなく、いくつかの正規表現チュートリアルを見ることで、より多くのことを学べると思います。

あなたの質問に答えるために、これ+は正規表現の量指定子であり、前の文字 (またはグループ) の 1 回以上を意味するので、少なくともC+1 に一致することを指摘したいと思います。すぐ。での検索は、実際には のみに一致します!CCCCCCCC+C

C++少なくとも C# では、正規表現でエラーが発生します。JGsoft、Java、PCRE (これらのフレーバーで++所有量指定子です) など、他の正規表現フレーバーでは使用できません。

じゃあ何をすればいいの?+検索でリテラル文字が検索されるように、文字をエスケープする必要があります++簡単な方法の 1 つは、 :の前にバックスラッシュを追加することです\+。もう 1 つの方法は+、角括弧で囲むことです。

これは言った、あなたは使うことができます:

C\+\+

または...

C[+][+]

を探すC++。ここで、同じ文字が 2 回あるため、{n}(wherenは出現回数) を使用して、最後の文字の出現回数を表すことができます。

C\+{2}

または...

C[+]{2}

同じ結果が得られるはずです。

于 2013-07-21T15:17:53.523 に答える