一致する文字列から文字を削除する方法は?


1

電話番号のリストからスペースを削除したい。電話番号の形式は、ほとんどの場合「+33 x xx xx xx xx」です(引用符を含む)。スペースは異なる方法で配置できます。

notepad ++では、「Find what:」フィールドは次のようになり、検出されたすべての電話番号に効果的に一致します"\Q+\E[0-9 ]+"。しかし、その一部(スペース)を削除する方法がわかりません。

私は2つのステップでそれを行うことを考えました:最初に上記の一致するパターンで検索結果を選択し、次に「選択中」チェックボックスをオンにして置換を実行しますが、すべての検索結果を一度に選択する方法が見つかりません。


テキストに電話番号以外のものが含まれていますか?「」を検索して「」に置き換えることはオプションではありませんか?
Excellll

回答:


3

「簡単な」方法は、数字のグループごとにキャプチャグループを使用することです。固定フォーマットの場合、それはうまく機能します。見つける:

"\+33 ([0-9]) ([0-9]{2}) ([0-9]{2}) ([0-9]{2}) ([0-9]{2})"

そして次のものに置き換えます:

"+33$1$2$3$4"

もう1つの方法はもう少し柔軟性がありますが、\Gあまり一般的ではないアンカーとあまり一般的ではないアンカーを使用するため、少し混乱\Kする可能性があります。

(?:"\+33|\G)[^\s"]*\K 

(最後にスペースがあります)そして何も置き換えません。

regex101デモ

(?:          # Begin group
  "\+33      # Match "+33
|            # OR
  (?!^)\G    # At the end of the previous match (and exclude start of lines)
)            # End group
[^\s"]*      # Any non-space or quote characters
\K           # Reset the match
             # Match a space

どちら\G\Kメモ帳++のいくつかの以前のバージョンでは利用できません。それらがいつ導入されたか正確には覚えていませんが、v6.5.2で動作します。


おかげで、うまくいきました!しかし、私はいくつかのことを理解していません:グループを作成するポイントは何ですか?そして、の違いは何だ(?:とは(:?また、私はの役割を理解していません\G
カッター

:コメントで説明するのは長すぎるが、ここでは潜在的に有用なリンクされます@Cutter \G(?: ... )
ジェリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.