我编写了这个有效的正则表达式,但老实说,这就像 75% 的猜测。
目标是这样的:我在 Xcode 中有很多导入,如下所示:
#import <UIKit/UIKit.h>
#import "NSString+MultilineFontSize.h"
我只想返回包含+
的类别。整个源代码中还有很多代码行,其中包括其他上下文中的 +
。
现在,这将返回整个 Xcode 项目中的所有正确行。但如果我从谷歌和 Stack Overflow 上搜索正则表达式教程中学到了一件事,那就是有很多不同的方法可以做事。我很乐意看到你们能想出各种不同的方法,使其在潜在的欺骗或失误方面变得更高效或更防弹。
^\#import+.[\"]*+.(?:(?!\+).)*+.*[\"]
预先感谢您的所有帮助。
更新
此外,我想我会接受任何使用最短字符串执行此操作的人的答案,而不会错过任何可能的欺骗。但再次感谢所有参与这次学习经历的人。
答案中的资源
这是 Dan Rasmussen 提供的练习正则表达式的绝佳资源:RegExr
最佳答案
我注意到的第一件事是您的 +
字符放错了位置:t+.
匹配 t
一次或多次,后跟一个字符.
。我假设您想要匹配导入的结尾,后跟一个或多个任意字符:import.+
其次,#
不需要转义。
这是我的想法:^#import\s+(.*\+.*)$
\s+
匹配一个或多个空白字符,因此可以保证该行实际上以 #import
开头,而不是 #importbutnotreally
或其他任何东西。
我不熟悉 xcode 语法,但表达式的以下部分 (.*\+.*)
简单地匹配带有 +
的任何字符串角色某处在其中。这意味着可能会匹配无效的导入,但我正在假设您尝试匹配有效的代码。如果不是,则需要对其进行修改以验证导入器语法。
附注要测试您的表达,请尝试 RegExr 。您可以将鼠标悬停在角色上以检查他们的行为。
关于regex - 我可以通过哪些方式改进这个正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11785438/