3

C# で正規表現を使用しているときに、次の問題に直面しています。

この単純な文字列を考えてみましょう: ~0~これは単純なテキストです~POP~NIZ~0~0~

もちろん、「〜」を除いて、3文字を超える文字列を含む2つの「〜」の間の文字列を選択したいと思います。私の例では、次のようになります。

これは簡単なテキストです

次のようなものを作成できます: ([\w]|[\d]|.|\,.................){4-500}

私は非常に長い正規表現で終わり、デバッグも読み取りも不可能です...

代わりに、 「'~' と '~' の間に含まれる '~' 以外の文字を指定してください」のような正規表現を作成することをお勧めします。

[^] の正しい使い方が見つからない!

これどうやってするの ?

前もって感謝します !

ANSWER : やっとこれができました : ~[^~]{3,}~

2 つの '~' の間に含まれる '~' 以外のすべてが必要であり、長さが 3 文字を超えています。

ご回答ありがとうございます。

4

3 に答える 3

4

最初と最後に追加のバッチが発生する可能性を気にしない場合は、次のように簡単に実行できます。

[^~]{3,}

または、長いものを分割して取得することもできます。

var tokens = str.Split('~').Where(s => s.Length >= 3);

文字を特定のセットに制限したい場合は、先読みと後読みを使用して確認できます。これはチルダ記号を消費しないため、次の 2 つの一致が得られます~123~abc~(これも慣れている場合は使用でき[^~]ます)。

(?<=~)[\w\d\s]{3,}(?=~)
于 2010-12-02T07:50:59.627 に答える
2

この正規表現を試してみてください(?:~([^~]{3,})~)
。2つの間のすべてに一致します ~~ (キャッチしません ~)

于 2010-12-02T07:52:06.803 に答える
0

何かのようなもの:

~([^~]{3}[^~]+)~

(テスト済み)

于 2010-12-02T07:52:13.743 に答える