regex - 我可以通过哪些方式改进这个正则表达式?

标签 regex xcode replace

我编写了这个有效的正则表达式,但老实说,这就像 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/

相关文章:

regex - 用于在 Excel 中使用正则表达式的通用 UDF

php - 正则表达式 - 让任何不是 ' 或 ; 的字符通过

java - 卡住了 String.replace java with regex

ios - 段错误: 11 with swift

sql - 如何从 SQL Server 2008 的查询结果中删除 'NULL'

Java - 给定字符串的正则表达式

xcode - 计算 cocoa 中的目录大小

xcode - 我可以阻止 Xcode 在遇到异常时显示 main.m 吗?

python - 用十进制替换文件中的所有十六进制

c++ - 替换字符串中的重复项