2

私は RE の経験があまりないということを言わなければなりません。いくつかの例を見てきましたが、私のニーズに合ったものはないようです。現在私は持っています:

            Regex pattern = new Regex("[x]");

しかし、「Exp」という単語の中にある場合は「x」を選択したくありません。これどうやってするの?

Exp(x)--> ブラケット内の x をターゲットにするだけで済みます

さまざまなバリエーションを試しました"[^Exp][x]" "(?Exp)[x]"が、望ましい結果が得られませんでした。

4

1 に答える 1

2

単語境界を使用してみてください。

Regex pattern = new Regex(@"\bx\b");

また、@二重エスケープのタスクを回避します。

単語境界は、文字、数字、またはアンダースコアと非文字/非数字/非アンダースコアの間で一致する特殊文字です。基本的に、 がある場合aa\bは途中ではなく、最初と最後にのみ一致します。がある場合、は before 、 betweenと the 、 betweenとafterに一致しますがa.2c、andの間は一致しません。詳細については、このサイトを参照してください。\baa..2c2c


また、角かっこで囲まれた を取得したい場合xは、ルックアラウンドを使用できます。

Regex pattern = new Regex(@"(?<=\()x(?=\))");

(?<=\()は肯定的な後読みであり、 の前に開き括弧があることを確認しxます。

(?=\))は正の先読みであり、 の後に閉じ括弧があることを確認しxます。

于 2013-09-02T15:10:42.247 に答える