我正在尝试做一个正则表达式字符串来快速找到所有强制展开的情况。这将在整个代码库中搜索所有带有感叹号的单词。但是,我已经拥有的正则表达式包含了我试图排除的变量的隐式声明。
这是我已经拥有的正则表达式。
(:\s)?\w+(?<!as)\)*!
它工作正常。它搜索“variableName!”、“(variableName)!”、“hello.hello!”。排除强制铸造也有效。它避免了诸如“hello as!UIView”之类的情况,但我也试图排除其他情况,例如“var hello:UIView!” 其中有一个感叹号。这就是我遇到的问题。我尝试了负前瞻和负后瞻,但没有解决这种情况。
这是我正在处理的示例正则表达式
(:\s)?\w+(?<!as)\)*!
这就是结果
testing.(**test)))!**
Details lists capture **groups!**
hello as! hello
**Hello!**
**testing!**
testing**.test!**
Hello != World
var noNetworkBanner**: StatusBarNotificationBanner!** <-- need to exclude
"var noNetworkBanner**: StatusBarNotificationBanner!**" <-- need to exclude