在Visual Studio 10中查找并替换正则表达式

时间:2011-09-30 03:00:14

标签: regex visual-studio-2010 replace

例如,我有以下字符串:

abc编辑工作表xyz
abc编辑合同xyz
abc编辑xyz

现在我想只将字符串“Edit”替换为“Detail”,“编辑工作表”“编辑合同”仍然保持不变。结果应该是:

abc编辑工作表xyz
abc编辑合同xyz
abc详细信息xyz

如果你能解释一下,我将不胜感激。

6 个答案:

答案 0 :(得分:3)

要匹配“编辑”,只有在其后面没有“工作表”或“合同”字样时,您可以使用:

<Edit>~(:b+(worksheet|contract))
  • <>分别匹配单词的开头和结尾。

  • ~(...)是大多数正则表达式称之为否定前瞻的内容。

  • :b+匹配任意组合中的一个或多个空格或制表符。

这些构造有许多正则表达式,但Visual Studio使用自己非常不寻常的语法。

答案 1 :(得分:1)

假设它是该行上唯一的单词,请搜索:

^Edit$

并替换为

Detail

^匹配一行的开头 $匹配一行的结尾。

答案 2 :(得分:1)

在Visual Studio查找和替换对话框中:

找到:编辑〜(工作表|合同) 替换为:细节

答案 3 :(得分:1)

你可以这样做:

  1. 将所有代码“编辑工作表”替换为“ABC123”
  2. 将所有代码“编辑合同”替换为“DEF456”
  3. 将所有代码“Edit”替换为“Detail”
  4. 将所有代码“ABC123”替换为“编辑工作表”(恢复旧字符串)
  5. 将所有代码“DEF456”替换为“编辑合同”(恢复旧字符串)
  6. 换句话说,你用2个幻想和独特的字符串隐藏“编辑工作表”和“编辑合同”,然后进行请求的替换并最终恢复原始文本。

答案 4 :(得分:0)

我认为你不需要正则表达式吗?

你不能只用“abc Detail xyz”替换“abc Edit xyz”

或者abc和xyz不一样吗?

答案 5 :(得分:0)

我不会使用正则表达式,只是简单的字符串方法。

我会循环查看所有寻找“编辑”的行,当我找到它时,检查下面的单词是“工作表”还是“合同”:在这最后一种情况下,我不会替换这个单词。 / p>

我用元语言写了一个例子:

While not EnfOfLine
   if "'Edit' is found" then
      if not "next word is 'worksheet' or 'contract'"
          then replace ("Edit", "Detail")
      end if
   end if
   go next line
end while