2016-08-16 14 views
1

(崇高)区切り文字ですべての行を保つ:私が欲しいもの正規表現は、私は、テキストのたくさんのファイルを持っていますが、一部の行にだけでラインがある

sometext:someothertext

はそれらのラインを維持することです。 は、私は正規表現を書いたが、それは私が何をしたいの正反対のことを行います。

[0-9a-zA-Z]+(:[0-9a-zA-Z]+)

はまた、それに区切り文字を持っているといくつかの行があります。私はそれらを保持する必要はありません。サンプルラインは次のようになります。someothertext

正規表現はsometext:someothertext形式を含む行だけを取得したいとどのように見えるか:

これは非常に素晴らしいラインと言ってものを約sometextのですか?

答えて

3

あなたは、この式はlike thisに動作します

^(?![0-9a-zA-Z]+:[0-9a-zA-Z]+$).*$\R* 

使用することができます。

置換テキストが空です。

パターンはの詳細:

  • ^ - ラインの開始(m複数行オプションがSublimeTextでデフォルトです)
  • (?![0-9a-zA-Z]+:[0-9a-zA-Z]+$) - 行がパターンに一致してはならない:1+英数字は:に続きます1つまたは複数の英数字
  • .*$ - 全体(空の空白行)に一致
  • \R* - ゼロ以上の改行。

私は、次のテキストを持っている場合:

local06:local16 
TEXT local76:local16 
local06:local17 
local06:local19 

More TEXT local76:local678 

を結果は次のとおりです。ここで

enter image description here

+1

ありがとうございます!それがすべきであるように働く!私は "一致していない"ことについて知らなかった – Baklap4

+1

'(?!...)'構造は[**否定先読み**]と呼ばれています(http://www.regular-expressions.info/lookaround.html) 。その中の '$ 'は正規表現エンジンに* line *をチェックするように指示します。そうでなければ、あなたのパターンで始まる行の場合にのみマッチを失敗します。 –

0

は負の例です。

[^: \t]:[^: \t] 

マッチ:

  1. ないコロン、スペースまたはタブ
  2. コロン
  3. ないコロン、スペースまたはタブ

あなたは除外したい他に「ない」の文字クラス(ES)何にでも追加することができます。ここで

は、より肯定的な例である:あなたが全体を一致させたい場合は

grep '[^: \t]:[^: \t]' foo.txt 
awk '/[^: \t]:[^: \t]/' foo.txt 
sed '/[^: \t]:[^: \t]/ p; d' foo.txt 

grep '[0-9A-Za-z]:[0-9A-Za-z]' foo.txt 
awk '/[0-9A-Za-z]:[0-9A-Za-z]/' foo.txt 
sed '/[0-9A-Za-z]:[0-9A-Za-z]/ p; d' foo.txt 

ます。grep、awkは、またはsedは、上で

[0-9A-Za-z]:[0-9A-Za-z] 

使用して印刷用のラインと一致しますあなたは.*のどちらかの正規表現の前後に使うことができます。

関連する問題