2016-12-08 17 views
0

私はこの使用してメモ帳をacheiveしようとしています++
文字列を検索し、その前にパターンを置き換える - メモ帳++

入力ファイルは、パターン
<コードスニペット文を持っている - これは...続く、variabeである>(品質

-- "command xyz d 
    command rererere 
    command ;" (fair quality) 
---- "command xyz d 
    command rereredfdfdre 
    command ffdfdfdf ;" (good quality) 
---- "command xffddyz d 
    command rerfdferere 
    command ;" (good quality) 
----"command fdfdfxyz d 
    command refffdrerere 
    command fdfdff;" ( fair quality) 

(fair quality)あり、すべてのインスタンスの
--Lookを私は何をしたいです)括弧内(を間の間隔を注意してくださいが可変であり、その後、(fair quality)
Oで文全体を削除/ pがこのようなものです:

---- "command xyz d 
    command rereredfdfdre 
    command ffdfdfdf ;" (good quality) 
---- "command xffddyz d 
    command rerfdferere 
    command ;" (good quality) 


私は(fair quality)の検索を交換するいくつかの基本的な正規表現を試みたが、どのように私はそれfrom x to y前に、文字列全体を削除しますか?
スペーシングパターンが標準であるとは思わないでください。これは、正規表現の仕事のために使用のものであってもよい2列間の間隔で規則性がイマイチ
例えば

"command xyz..( fair quality);" 
"command xyz (fair quality );" 

を変更します。
また、間に不要な改行がある場合があります。私fair
のインスタンスを探しに行く - - だから、正確な正規表現のロジックは次のようになり

"command  
xyz..( fair 
quality);" 

ので
も を助けていないラインの仮定の終わりfair
のそのインスタンスの前commandの第一のインスタンスを探します - commandより前に、"の最初のインスタンスを見つけます。 X
- fairの後に最初のインスタンス"を検索します。私たちは、このY
を呼び出します - XからY

答えて

1

出力:

  • は何を探す:-+\s*"[^"]+?"\s*\(\s*fair quality\)
  • をと交換してください:NOTHING
  • Repalceすべて

説明:

-+    : one or more dash 
\s*    : 0 or more spaces 
"    : a double quote 
[^"]+?   : one or more any character that is not a double quote 
"    : a double quote 
\s*    : 0 or more spaces 
\(    : an open parenthesis 
\s*    : 0 or more spaces 
fair quality : literally 'fair quality' 
\)    : a close parenthesis 
1

に削除するには、空に置き換えてください正規表現を作成し、.が改行にマッチし

-*\s*"command\b((?!\bquality\b\s*\)).)*\(\s*fair\s+quality\s*\)(;")?\r?\n? 

を見つけるtemper greedy token solution

とregexで必要

を選択します

正規表現の詳細:

  • -*\s*"command\b - コマンドの前に」の第一のインスタンスと一致する
  • ((?!\bquality\b\s*\)).)* - トークン貪欲な気性と quality)の一部ではない任意の文字に一致する
  • \(\s*fair\s+quality\s*\)(;")?\r?\n? - が
  • 背後 ;"と改行を含む fair quality一部を、一致

入力テスト

-- "command xyz d 
    command rererere 
    command ;" (fair quality) 
---- "command xyz d 
    command rereredfdfdre 
    command ffdfdfdf ;" (good quality) 
---- "command xffddyz d 
    command rerfdferere 
    command ;" (good quality) 
----"command fdfdfxyz d 
    command refffdrerere 
    command fdfdff;" ( fair quality) 
    ----"command fdfdfxyz d 
    command refffdrerere 
command  
xyz..( fair 
quality);" 
"command xyz..( fair quality);" 
"command xyz (fair quality );" 

あなたが行うことができ

---- "command xyz d 
    command rereredfdfdre 
    command ffdfdfdf ;" (good quality) 
---- "command xffddyz d 
    command rerfdferere 
    command ;" (good quality) 
関連する問題