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

Regex 正则表达式是否用MS Word中的另一个字符串替换字符串?,regex,ms-word,Regex,Ms Word,有谁能帮我用正则表达式来翻: filename_author 到 我正在使用MS Word 2003,并试图通过Word的查找和替换来实现这一点。我尝试了使用通配符功能,但没有任何运气 我是否只能通过编程来完成这项工作?这是正则表达式: ([^[uu]*)u(.*) 下面是一个C#示例: 下面是一个Python示例: from re import sub test = "filename_author"; result = sub('([^_]*)_(.*)', r'\2_\1', test

有谁能帮我用正则表达式来翻:

filename_author

我正在使用MS Word 2003,并试图通过Word的查找和替换来实现这一点。我尝试了
使用通配符
功能,但没有任何运气

我是否只能通过编程来完成这项工作?

这是正则表达式:

([^[uu]*)u(.*)

下面是一个C#示例:

下面是一个Python示例:

from re import sub

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

编辑:要在Microsoft Word中使用通配符执行此操作,请将其用作搜索字符串:

()()

并替换为:

\2\u1

另外,请参阅以了解我在上面使用的语法的解释:

  • 星号(*)返回单词中的所有文本
  • 小于和大于符号(<>)标记开始和结束 每一个单词,分别。他们 确保搜索返回一个 一个字
  • 括号和括号之间的空格将单词分成两部分 不同的组:(第一个词)(第二个词) 单词)。括号也表示 您希望搜索的顺序 对每个表达式求值
给你:

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

根据上下文的不同,这可能有点贪婪。

在.NET中,对于这种非常特殊的情况,您可以使用
([^\u]+)\ u([^\ u]+)
作为正则表达式,然后使用
$2\u$1
作为替换模式。如果您需要两个以上的零件,它会变得复杂得多。

搜索模式:

([^_]+)_(.+)
替换模式:

$2_$1
在C#中,你也可以这样做

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

当然,您询问了regex,但这可能是一个不错的选择。

因为您使用的是MS Word,您可以尝试非编程方法。高亮显示所有文本,选择表格->转换->文本到表格。将列数设置为2。选择处的单独文本,选择另一个收音机,然后输入一个33;。那会给你一张桌子。切换两列。然后再次使用u将表格转换回文本


或者您可以将整个内容复制到Excel,构造一个公式来拆分和重新连接文本,然后将其复制并粘贴回Word。两者都可以。

实际上,我需要在支持正则表达式的编辑器上使用它。我想C++/C#应该可以吧。-1:哪种语言?哪个编辑器?那么您要替换的文本在MS Word文档中?是的。它在整个文档中。@Joan,我希望我的编辑在澄清您的意图的同时仍能保持您问题的精神。正如其他人所指出的,(*)对于正则表达式的第二部分比([^]+)更好。我想我可能必须在代码中这样做。如果我必须用“myname\u filename”这样的固定文本替换第二部分,你知道我需要什么吗?
$2_$1
string[] parts = "filename_author".Split('_');
return parts[1] + "_" + parts[0];