正则表达式用MS Word中的另一个字符串替换字符串?

时间:2009-05-26 17:16:57

标签: regex ms-word

任何人都可以帮我正式转向:

filename_author

author_filename

我正在使用MS Word 2003,并尝试使用Word的Find-and-Replace执行此操作。我尝试了use wildcards功能,但没有运气。

我只能以编程方式进行吗?

6 个答案:

答案 0 :(得分:14)

这是正则表达式:

  

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

这是一个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,了解我上面使用的语法的解释:

  
      
  • 星号(*)返回单词中的所有文字。
  •   
  • 小于和大于符号(&lt;&gt;)标记开始和结束   每个单词,分别。他们   确保搜索返回a   单词。
  •   
  • 括号和它们之间的空格将单词划分为   不同的群体:(第一个字)(第二个   字)。括号也表明   您要搜索的顺序   评估每个表达。
  •   

答案 1 :(得分:2)

你走了:

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

根据具体情况,这可能有点贪心。

答案 2 :(得分:2)

搜索模式:

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

替换模式:

$2_$1

答案 3 :(得分:1)

在.NET中,您可以使用([^_]+)_([^_]+)作为正则表达式,然后使用$2_$1作为替换模式,针对此特定类型的情况。如果你需要超过2个部分,它会变得更加复杂。

答案 4 :(得分:1)

由于您使用的是MS Word,因此您可以尝试使用非编程方法。突出显示所有文字,选择表格 - &gt;转换 - &gt;表格的文字。将列数设置为2.选择“分隔文本位”,选择“其他”单选按钮,然后输入_。那会给你一张桌子。切换两列。然后再使用_将表格转换回文本。

或者您可以将整个内容复制到Excel,构建一个公式来拆分和重新加入文本,然后将其复制并粘贴回Word。要么工作。

答案 5 :(得分:0)

在C#中你也可以这样做。

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

你当然询问正则表达式,但这可能是一个不错的选择。