Regex 在VB.Net中高效地替换所有和到AndAlso
我有其他人编写的代码,由于某些情况下不使用AndAlso关键字,很容易出现NullReferenceException 我的目标是简单地用VisualStudio的regex finder替换所有这些和到AndAlso的。我对正则表达式的了解是中等的,但我正在努力构建一个覆盖大多数情况的正则表达式Regex 在VB.Net中高效地替换所有和到AndAlso,regex,visual-studio-2015,replace,Regex,Visual Studio 2015,Replace,我有其他人编写的代码,由于某些情况下不使用AndAlso关键字,很容易出现NullReferenceException 我的目标是简单地用VisualStudio的regex finder替换所有这些和到AndAlso的。我对正则表达式的了解是中等的,但我正在努力构建一个覆盖大多数情况的正则表达式 这里是要考虑的案例✓ 标记应更换的部件,并: 和✓ 富和 “福和 富吧和✓ 富吧和巴兹✓ 福吧巴兹和库克斯 还有福和✓ 一, 1请注意,带有2个有效And的行也必须起作用 我已经想出了这个正则表达式:
这里是要考虑的案例✓ 标记应更换的部件,并: 和✓ 富和 “福和 富吧和✓ 富吧和巴兹✓ 福吧巴兹和库克斯 还有福和✓ 一,
1请注意,带有2个有效And的行也必须起作用 我已经想出了这个正则表达式:?:^ |?:和?:[^']*?:[^]*[^']**和 它似乎做了我想要的,但你可能已经知道这是非常不有效的,而且它会导致我的VS在通常1或2场比赛后挂起。我想这可能会导致灾难性的回溯什么正则表达式可以有效地完成这项任务?我试图提出一种更简单的模式,并提出以下建议:
(?<="")( And )|(?<=")( And )(?!.*?\")
现场检查。老实说,我会小心以自动方式执行此操作,而是希望查看代码。@JoelCoehoorn我知道有很多情况可能会出现问题,但使用版本控制,如果出现任何问题,我将无法恢复,我将知道出了什么问题。我有超过30k行的代码,我不会一行一行地修改。我还确保以前的开发人员不会执行按位操作,因此不需要and和Or。这很好。我仍然会担心这样的情况:如果通常是虚假的,并导致重要的副作用,那么。。。突然重要的副作用停止了。这在一开始并不完全是一种好的做法,但旧的和旧的表达方式也不一样。如果我们对代码质量有信心,我们就不会陷入这样的混乱。您仍然可以使用find函数以代码为目标进行检查,现在您的搜索更容易了,因为一些误报不会引起问题。非常正确,肯定会重新运行测试。谢谢你提到这样一个有问题的案例。