1

この .xml で、二重引用符 ( )_の最初のペアの間のすべてのアンダースコア ( ) 文字をピリオド ( )に置き換えたいと考えています。".

この正規表現を使用しandroid:name="([A-Za-z0-9_.]+)"て選択を取得しましたが、この選択内でをに変更するにandroid:name="com_android_contacts"はどうすればよいですか?_.

<package-redirections android:name="com_android_contacts" android:resource="@xml/com_android_contacts" android:minSdkVersion="16" />

<package-redirections android:name="com.android.contacts" android:resource="@xml/com_android_contacts" android:minSdkVersion="16" />

ありがとうございました。

4

3 に答える 3

2

次の正規表現を使用できます。

(?:android:name="[^"_]*)\K_([^"_]*)

そして、置換.$1がなくなるまで、必要な回数だけ置換します。

正規表現検索を選択していることを確認してください。バージョンの違いについてはわかりませんが、これは v6.1.8 で動作します。

これは、属性内の任意の数のドットに対して機能しandroid.nameます。

\K戻す必要がないように、試合をリセットしますandroid:name


ところで:PCRE風味の正規表現では、これを使用できます:

(?:android:name="[^"_]*|\G)\K_([^"_]*)

これは、すべてのアンダースコアをドットに 1 回で置き換えます。

\G前の試合の終わりに一致します。

于 2013-10-02T10:45:55.330 に答える
0

notepad ++で一度に置き換えることができるかどうかはわかりませんが、_が2つしかない場合は、これを使用できます。

(android:name="[^"\._]*)(_)([^"\._]*)(_)([^"\._]*?")

に置き換えます:

\1\.\3\.\5
于 2013-10-02T10:46:00.337 に答える
0

すべての行が次のようになっている場合 (つまり、区切り文字が _ の 3 つの要素)、検索を試すことができます。

(android:name="[^_]+)_([^_]+)_([^"]+")

交換:

$1.$2.$3"

説明:

角括弧 () 内の値は、$1、$2、$3 という変数に保存されます (左から右へ) [^_] = _ 以外のすべての文字

あなたの例では $1 = android:name="com 次の _ は . などに置き換えられます。

于 2013-10-02T10:48:25.590 に答える