例如,我有以下字符串:
abc编辑工作表xyz
abc编辑合同xyz
abc编辑xyz
现在我想只将字符串“Edit”替换为“Detail”,“编辑工作表”“编辑合同”仍然保持不变。结果应该是:
abc编辑工作表xyz
abc编辑合同xyz
abc详细信息xyz
如果你能解释一下,我将不胜感激。
答案 0 :(得分:3)
要匹配“编辑”,只有在其后面没有“工作表”或“合同”字样时,您可以使用:
<Edit>~(:b+(worksheet|contract))
<
和>
分别匹配单词的开头和结尾。
~(...)
是大多数正则表达式称之为否定前瞻的内容。
:b+
匹配任意组合中的一个或多个空格或制表符。
这些构造有许多正则表达式,但Visual Studio使用自己非常不寻常的语法。
答案 1 :(得分:1)
假设它是该行上唯一的单词,请搜索:
^Edit$
并替换为
Detail
^
匹配一行的开头
$
匹配一行的结尾。
答案 2 :(得分:1)
在Visual Studio查找和替换对话框中:
找到:编辑〜(工作表|合同) 替换为:细节
答案 3 :(得分:1)
你可以这样做:
换句话说,你用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