私は他の誰かの正規表現を見ています...私は、私は肯定的なlookbehindを扱っていますが、私はそれが一致するはずのものがわからない:(?<=[^])\t{2,}|(?<=[>])
。C#regexで[^]と一致するものは何ですか?
私は[stuff]
試合のの間で任意の文字、トン、uは、およびFを知っています。そして、私は[^stuff]
がそれらの中ででなく、と一致することを知っています。
しかし、[^]
の意味は?私はそれが "長さゼロでないもの"、つまり "何か"を意味すると思います。しかし、単純な.
式(改行をキャプチャするために)で拡張を使うのはなぜですか?
更新:パーWikterさんのコメント
は、[^]
だけでは有効ではありません。どんな[^]
試合
\t{2,}
のための背後に見える - - その後見つけしかし、それはまだ私がこの事を行うことになっているかと思っ葉...
私には、直感的な読書は
(?<=[^])
...です二つ以上のタブ
|
- そのための一致がない場合は...
(?<=[>])
- ...のための後ろに見えます文字。
私の解釈はどこですか?
ECMAScript以外の大部分の正規表現の味のような無効なパターンです。それは* 'Unterminated [] set' *例外をスローします。どの文字にもマッチさせるには、 '(?s:。)'( 'RegexOptions.Singleline'オプション付きの' .'パターン)を使います。 –
@WiktorStribiżewありがとう、あなたが正しいです、私が与えた表現はコンパイルされません。ソース正規表現からさらにコンテキストを追加しました: '(?<= [^])\ t {2、} |(?<=[>)'。 – mac9416
はい、「C#regexでは[^]は何にマッチしますか?それは無効なパターンなので何もマッチしません。それはまったく試されていなくても、解析段階で失敗します。そして '[^>]'は、 '>'以外の文字にマッチするネゲートされた文字クラスです。 –