0

検索を行ったところ、正規表現による複数の置換について多くの質問が見つかりましたが、私は EditPadPro で作業しているため、その環境の正規表現構文で動作するソリューションが必要です。自分では解決策を見つけることができなかったので、誰かがいくつかの指針を持っていることを願っています。

追加の免責事項: 私は正規表現が苦手です。というか本当に…まずい。私がやっているwtfをほとんど知らないように.だから、言われていることは、私がする必要があることと、私が現在それにどのように近づいているかです...

2 つの可能な値を、対応する置換に置き換える必要があります。私の2つの検索は次のとおりです。

(.*)-sm (.*)-rad

現在、これらを個別に実行し、それぞれを単純な文字列に置き換えます。

sm rad

基本的に、「sm」の前にあるものはすべて削除する必要があるため、sm までのすべてを検出し、すべてをその文字列に置き換えます (「rad」についても同様です)。

しかし、単一の検索/置換操作でこれを行う方法があるはずです。私はうまく検索部分を行うことができます:

(.*)-sm|(.*)-rad

しかし、それぞれを一致する値に置き換える方法は? それが私が立ち往生しているところです。私は試した:

sm|rad

残念ながら、それは置換に使用される完全な文字列そのものになります。

4

2 に答える 2

2

ジョナサン、最初に、テキストの正規表現に EPP Pro を使用したことを祝福させてください。これは私のメインのテキスト エディターであり、正規表現愛好家としてこれを選んだ主な理由は、正規表現構文のサポートが競合するエディターよりもはるかに優れていることです。たとえば、Notepad++ は、正規表現の粗雑なサポートで知られています。もちろん、その理由は、EPP の作成者である Jan Goyvaerts が伝説的な RegexBuddy の作成者であるためです。

百聞は一見に如かず。「すべて置換ボタン」を押すだけです。正規表現ボックスの式は、空白文字以外のダッシュの前にあるものはすべて削除できると想定しているため、これが望ましくない場合は調整する必要があります。

EPP 正規表現のスクリーンショット

于 2014-04-22T21:03:16.550 に答える
1

検索する:

(.*)-(sm|rad)

これで、正規表現で括弧内に何かを入れると、それらの一致が一時変数に格納されます。したがって、一致したもの (.*) は\1に保存され、一致したもの (sm|rad) は\2に保存されます。したがって、次のように置き換えます。

\2

置換変数は、使用しているプログラミング言語によって異なる場合があることに注意してください。たとえば Perl では、代わりに$2を使用する必要があります。

于 2014-04-22T20:39:48.317 に答える