web-dev-qa-db-ja.com

notepad ++を見つけてワイルドカードに置き換えます

正規表現に関する約15のチュートリアルを読みましたが、問題に合わせて調整できなかったため、明らかに理解できていません。

私は多くの異なるドキュメントに見られるコードのセットを持っています。 2つのアンカータグ間でコンテンツが異なるこれらのバリアントが存在する可能性がありますが、ここに1つのバリアントがあります(他はすべて同様の形式です)。

[anchor=ad1][img]http://i.imgur.com/48rwaraw.png[/img] 
                                 [URL=http://goo.gl/Ii3WNz][img]http://i.imgur.com/rBbf7nM.png[/img][/URL]
                                                 [size=7pt]Advertised sites are not endorsed and may be unsafe, untrustworthy, or illegal in your jurisdiction. [url=http://goo.gl/aw52j52]Advertise here.[/url][/size]
[img]http://i.imgur.com/48rwaraw.png[/img][anchor=ad1end]

アンカータグ間のすべてを置き換えることができるようにしたい、つまり私の*がここにある場所:

[anchor=ad1]*[anchor=ad1end]

違いが生じる場合、置換には元の文字と同様の文字が含まれます。正規表現で正しい文字列を見つけることができないようです。別の文字列に置き換えてもかまいません。助けてくれてありがとう。

編集:ToolBucketを使用して複数行を使用する

1
Adam

タグ間の複数行のテキスト文字列を検索して置換

ソリューション#1

_Find what_で次の正規表現を使用します:\[anchor=ad1\](.*?)\[anchor=ad1end\]
_Replace with_:_[anchor=ad1]replace[anchor=ad1end]_
そして_Regular expression_と_[x] . matches newline_を選択します

Notepad++ find and replace regex example

テスト用のサンプルデータ:

_[anchor=ad1]some multiline string of text
   that should be replaced[anchor=ad1end]
[anchor=ad1][img]http://i.imgur.com/some_image.png[/img]
   another one multiline string of text
   that should be replaced[anchor=ad1end]
...
_

ソリューション#2

もう少し高度なソリューション。これには、Notepad ++ v6.0以降が必要です。

何を見つける:_(?<=\[anchor=ad1\]).*?(?=\[anchor=ad1end\])_
次のように置き換えます:replace
_Regular expression_と_[x] . matches newline_を選択します
重要な注意ReplaceボタンはNotepad ++ v6.1.6では機能しませんが、_Replace All_は問題なく機能します。

enter image description here

3
Dmytro Dzyubak