0

この正規表現の結果の否定を取得するにはどうすればよいですか?

8000[0-9]{12}|4000[0-9]{12}|2000[0-9]{11}

負の値を取得するように正規表現を変更したいだけです。

このサンプルの例:

200045646587982  
8000046678465132  
8000078526654112  
4000846464256741  
4000875465123111  
8318548479844423  
8020489065458054  

現在の正規表現を実行すると、次の結果が得られます。

200045646587982  
8000046678465132  
8000078526654112  
4000846464256741  
4000875465123111  

正規表現が逆を返したい:

8318548479844423  
8020489065458054  
4

3 に答える 3

2

使用できるツールによって異なります。

入力を取得し、「正の」正規表現を使用して、一致する行を空の文字列に置き換えてから、それらを取り除きます。

たとえば、入力がファイルであり、Unix 環境で作業している場合:

猫入力.txt | sed s/my-positive-regexp//g

一致する文字列を空の文字列に置き換えます。

于 2012-11-15T12:46:50.880 に答える
0

ここで私の答えを見る:https ://stackoverflow.com/a/12139118/1548853

答えが完全にあなたに向けられているわけではありませんが、同じ原則が当てはまります。

于 2012-11-08T16:25:09.463 に答える
0

これは、パターンを反転/否定するよりも簡単だと思います。

    if (!Regex.IsMatch("input", "pattern")) 
    {
    }
于 2012-11-08T17:09:18.363 に答える