web-dev-qa-db-ja.com

正規表現とNotepad ++を使用してログの文字列からIPアドレスを抽出する方法

私はログファイルからそのような種類の文字列を持っています

rule family="ipv4" source address="54.246.81.158" reject
rule family="ipv4" source address="175.36.129.24" reject

そのすべての文字列からIPアドレスを照合し、メモ帳++テキストエディターで正規表現を使用して、元のアドレスを一致したIPに置き換えるにはどうすればよいですか?

期待される結果

54.246.81.158
175.36.129.24

私は正規表現と検索と置換のみを使用して目標を達成することを好みます。 Notepad ++で可能な場合は、マクロ機能を使用できることはわかっていますが、使用したくありません。

したがって、最初はIPを正規表現(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})。次に、元の文字列をステップ1のIPに置き換えますが、Notepad ++を使用してそれが可能かどうかはわかりません。これで失敗した場合は、vimを使用します:-)

2
Twissell
  • Ctrl+H
  • 何を見つける:^.+?((?:\d+\.){3}\d+).+$
  • と置換する: $1
  • チェックラップアラウンド
  • check Regular expression
  • チェックしないでください. matches newline
  • Replace all

説明:

^           : beginning of line
.+?         : 1 or more any character but newline
(           : start group 1
  (?:       : start non capture group
    \d+     : 1 or more digit
    \.      : a dot
  ){3}      : end group, must appear 3 times
  \d+       : 1 or more digit
)           : end group 1
.+          : 1 or more any character but newline
$           : end of line

交換:

$1          : content of group 1 (ie. the IP)

特定の例の結果:

54.246.81.158
175.36.129.24

IPアドレスがあることを確認するには、

((?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.){3}(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))

の代わりに

((?:\d+\.){3}\d+)
3
Toto

より簡単なソリューションですが、RegExは使用しません。

交換する

rule family="ipv4" source address="

何もない、そして

" reject

何もありません。

0
pbies