任何人都可以帮我正式转向:
filename_author
到
author_filename
我正在使用MS Word 2003,并尝试使用Word的Find-and-Replace执行此操作。我尝试了use wildcards
功能,但没有运气。
我只能以编程方式进行吗?
答案 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];
你当然询问正则表达式,但这可能是一个不错的选择。