我的代码是由其他人编写的,并且由于某些条件没有使用NullReferenceException
关键字而容易AndAlso
。
我的目标是使用Visual Studio的正则表达式查找器简单地将所有And
替换为AndAlso
。我对正则表达式的了解是中间的,但我正在努力构建一个涵盖大多数情况的正则表达式。
以下是要考虑的行案例(✓标记应替换And
的行案例):
"" And ""
✓
foo " And "
'foo And
"foo'bar" And
✓
"foo" bar "" And baz
✓
foo "bar" baz " And qux"
"" And " foo " And
✓(1)
(1)请注意,包含2个有效And
的行也必须正常工作
我想出了这个正则表达式:((?:^|(?: And ))(?:[^"']*(?:"[^"]*")[^"']*)*)( And )
它似乎做了我想要的但你可能已经知道这是非常低效的,它通常导致我的VS在1或2场比赛后挂起。我认为它可能导致灾难性的回溯。
什么样的正则表达式可以有效地完成这项任务?