0

たくさんの URL を含むファイルがあり、スペースを検索して置き換え、アンダースコアに変更しようとしています。

ここにテキストの例をいくつか示します。ファイル名にアンダースコアを追加したいだけです。

<img style="width: 800px;" src="http://example.org/wp-content/uploads/2013/08/6K5A8111 to print.jpg" alt="" />

<img style="width: 800px;" src="http://example.orgv/wp-content/uploads/2013/08/Pizza Newbron Session 33psfb.jpg" alt="" />

Sublimetext の検索と正規表現を使用した置換でこれを実行しようとしていますが、使用するパターンが見つからないようです。どんな助けでも大歓迎です。

4

3 に答える 3

2

タグがすべて画像で、上記のタグと同様の形式である場合、正と負の先読みを使用して単一の正規表現でこれを実現できます。

\s(?=(\w+))(?!style|alt|src|\d+px)

前向き先読み

この正規表現の最初のステップは、スペースとそれに続く 1 つ以上の英数字を見つけることです。

\s(?=(\w+))

この式は、次の一致を検出します。

  • 「img」と「style」の間のスペース
  • 「幅」と「800px」の間のスペース
  • src の前のスペース
  • ファイル名のスペース
  • ファイル名と alt の間のスペース

この正規表現を許可する外側の括弧は、結果の一致が式の次の部分、つまり否定先読みにフィードされることを意味します。

否定先読み

このステップでは、関心のない一致を否定します。

(?!style|alt|src|\d+px)

もう 1 つの方法は、2 つの肯定的な先読みを使用することです。このアプローチにより、次のような最終的な正規表現が得られます。

\s(?=(\w+))(?=\w+(\s|\w)*\.[jpg])

この式の最初の部分は上記と同じです。2 番目の先読みはもう少し一般的で、開始する英数字を検索し、その後にさらに英数字またはスペースが複数回続き、その後に .jpg 拡張子が続きます。

2 番目の肯定的な先読み

(?=\w+(\s|\w)*\.[jpg])
于 2013-08-13T23:32:39.967 に答える
2

たまたま、 selection 内のスペースをアンダースコアに置き換えるために、少し前にスニペットを書きました。

<snippet>
    <content><![CDATA[${SELECTION/\s/_/g}]]></content>
</snippet>

これを として保存しますPackages/User/replace_space_with_underscore.sublime-snippetPreferences -> Key Bindings - User次に、次のショートカットを開いて追加します。

{ "keys": ["ctrl+shift+-"], "command": "insert_snippet", "args": { "name": 
    "Packages/User/replace_space_with_underscore.sublime-snippet" } }

これが唯一のカスタム キー バインドである場合は、[]角かっこで囲む必要があるため、次のようになります。

[
    { "keys": ["ctrl+shift+-"], "command": "insert_snippet", "args": { "name": 
        "Packages/User/replace_space_with_underscore.sublime-snippet" } }
]

これで、スペースを含む URL を強調表示CtrlShift-して を押すと、アンダースコアに置き換えられます。間違いなく正規表現よりも多くの作業が必要ですが、Phillip Schmidt の答えが正しい場合、これが最善の方法かもしれません。幸運を!

于 2013-08-13T22:44:47.243 に答える