2016-04-28 10 views
1

私は多くの行でcsvファイルを持っています。正規表現:二つの条件

;F;または;A;の行を取得したいが、;REPORTING;を使用しない。

  1. 123456 ;;;;; 75 ;;;;; 18; -83、-7、19 ;;
  2. 654321; 52 ;;;;;;;; F; 8; -3; 7; 489 ;; ;;;;;; 573 ;;;; 1858
  3. 123456; -88963; -746、1549 ;;
  4. 123456 ;; 523 ;;; REPORTING; fd3574 ;;;; 183001; -86583; -457; 19211 ;;

私はライン1と2ではなく3行目と4を取得したい...

私が試した:

;(?!REPORTING);.*;(F|A); 

が、ノー成功を...

をどれでもアイディア ?

+0

動作します。 – RPGillespie

答えて

1

これは正規表現よりも安くなり、言語、 `find`または` in`操作に応じて、

^(?=.*;[AF];)(?!.*;REPORTING;) 

Regex Demo

+1

ルックアラウンドの使用は高価です! '^(*;?!。REPORTING;)。*; [AF];。それは良い方法 – Aaron

+0

と同じものを返します。から。それはまだ少し効率的ですが、少しだけです。 – rock321987

+0

私は100個の手順を引っ張っどこまあ、実際に私にはわからないのです@Aaron *' 100のより少ない工程 – Aaron