正则表达式匹配字符串,不以某个字符串结尾

时间:2011-09-25 21:22:42

标签: regex

我试图编写一个正则表达式作为替换操作的一部分。

我有很多路径如下:

<ProjectReference Include="..\Common.Workflow\Common.Workflow.csproj">
<ProjectReference Include="..\Common.Workflow\Common.Workflow.Interfaces\Common.Workflow.Interfaces.csproj">
<ProjectReference Include="..\Common.Workflow\Common.Workflow.Persistence\Common.Workflow.Persistence.csproj">
<ProjectReference Include="..\Common.Workflow\Common.Workflow.Process\Common.Workflow.Process.csproj">

我需要在所有情况下替换Common.Workflow\,除非它包含Common.Workflow.csproj

我正在将这些文件作为代码清理的一部分移动。

2 个答案:

答案 0 :(得分:4)

Common\.Workflow\\(?!Common\.Workflow\.csproj)替换为您需要的内容。

答案 1 :(得分:2)

使用负面预测和负面观察,如下所示:

(?<!.*Common.Workflow.csproj)Common.Workflow\\(?!.*Common.Workflow.csproj)

说明:

  • (?<!.*Common.Workflow.csproj)表示“Common.Workflow.csproj在匹配前不得出现
  • (?!.*Common.Workflow.csproj)表示“匹配后”Common.Workflow.csproj不得出现

如果Common.Workflow.csproj在输入中出现任何位置,此正则表达式将阻止匹配(您未指定仅在搜索后显示否定匹配)