2009-05-26 19 views
2

誰でもオンにする正規表現で私を助けることができます:文字列をMS Wordの別の文字列に置き換える正規表現ですか?

filename_author 

author_filename 

に私はMS Wordの2003を使用していますし、Wordの検索と置換でこれを行うにしようとしています。私はuse wildcards機能を試しましたが、運が全くありませんでした。

私はプログラムでそれを行うことができますか?ここで

+3

あなたはどの言語を使用していますか? – Gumbo

+0

実際に私は正規表現をサポートするエディタでこれを使用する必要があります。 C++/C#はうまくいくはずです。 –

+0

-1:どの言語ですか?どのエディタ? –

答えて

13

は正規表現です:

([^_]*)_(.*)

そしてここでは、C#の例である:ここで

using System; 
using System.Text.RegularExpressions; 

class Program 
{ 
    static void Main() 
    { 
     String test = "filename_author"; 
     String result = Regex.Replace(test, @"([^_]*)_(.*)", "$2_$1"); 
    } 
} 

はPythonの例である:

from re import sub 

test = "filename_author"; 
result = sub('([^_]*)_(.*)', r'\2_\1', test) 

編集:これで

(<*>)_(<*>)

と置き換えます:ワイルドカードを使用してMicrosoft Wordでこれを行うためには、検索文字列としてこれを使用

\2_\1

また、私が上に使用している構文の説明についてはAdd power to Word searches with regular expressionsを参照してください。

  • アスタリスク(*)は、単語内のすべてのテキストを返します。
  • より小さいおよびより大きい記号(<>)は、それぞれ各単語の開始および終了をそれぞれ とマークします。彼らは を検索して、 という1語を確実に返します。
  • 括弧とその間のスペースは、単語を 個の異なるグループ:(最初の単語)(2番目の ワード)に分割します。かっこも を検索し、それぞれの式を に検索してください。ここで
+0

私が推測するコードでこれを行う必要があるかもしれません。 2番目の部分を "myname_filename"のような固定されたテキストに置き換えなければならない場合は、私が必要とするものを知っていますか? –

+0

ありがとうございます。これはトリックでした。 –

2

あなたが行く:

s/^([a-zA-Z]+)_([a-zA-Z]+)$/\2_\1/ 

文脈によっては、少し欲張りかもしれないという。

1

.NETでは、([^_]+)_([^_]+)を正規表現として使用し、次にこの非常に特殊なケースの場合、置換パターンとして$2_$1を使用できます。2つ以上の部品が必要な場合は、もっと複雑になります。

+0

他の人が指摘しているように、(。*)は([^ _] +)よりも正規表現の2番目の部分では良いでしょう。 –

2

検索パターン:

([^_]+)_(.+) 

交換パターン:

$2_$1 
0

のC#では、あなたもこのような何かを行うことができます。

string[] parts = "filename_author".Split('_'); 
return parts[1] + "_" + parts[0]; 

あなたは正規表現について尋ねましたが、これは良い選択肢かもしれません。

1

MS Wordを使用しているので、プログラミング以外の方法で試してみることもできます。すべてのテキストをハイライト表示し、表 - >変換 - >表へのテキストを選択します。 2.列の数を2に設定します。[個別のテキスト]を選択し、[その他のラジオ]を選択して_を入力します。それはあなたにテーブルを与えるでしょう。 2つの列を切り替えます。次に、_を再度使用してテーブルをテキストに変換し直します。

または、Excelに全体をコピーして、分割してテキストに再結合し、それをWordにコピーアンドペーストする数式を作成できます。いずれもうまくいくだろう。

関連する問題