使用Ruby正则表达式,以特定格式查找每个文件的多个Objective-C注释
我正在编写一个Ruby脚本,它使用正则表达式在Objective-C源代码文件中查找特定格式的所有注释 格式是使用Ruby正则表达式,以特定格式查找每个文件的多个Objective-C注释,ruby,regex,comments,Ruby,Regex,Comments,我正在编写一个Ruby脚本,它使用正则表达式在Objective-C源代码文件中查找特定格式的所有注释 格式是 /* <Headline_in_caps> <#>: <Comment body> **/ 以下是Rubular上的示例: 我正在使用gsub处理整个文件字符串上的正则表达式,运行Ruby 1.9.3。我的另一个问题是gsub给了我Rubular忽略的东西,这是一种回归还是Rubular使用了一种不同的方法来给出我想要的东西 在这个关于多次
/* <Headline_in_caps> <#>:
<Comment body>
**/
以下是Rubular上的示例:
我正在使用gsub
处理整个文件字符串上的正则表达式,运行Ruby 1.9.3。我的另一个问题是gsub给了我Rubular忽略的东西,这是一种回归还是Rubular使用了一种不同的方法来给出我想要的东西
在这个关于多次出现的问题中,答案是使用g作为全局选项,这在Ruby正则表达式中无效。解决方案:
- 使用
拆分整个字符串(注释结尾)'*/'
- 如果拆分只返回一个元素,则字符串中没有注释
- 否则,对于每个标记(最后一个标记除外),使用RegExp
(从“/*”开始直到标记结束)来捕获整个注释内容(您可以在这里使用更复杂的RegExp来捕获注释中的更多数据)%r{/\*(.*)$}
char *myString = "a comment /* */";
解决方案:
- 使用
拆分整个字符串(注释结尾)'*/'
- 如果拆分只返回一个元素,则字符串中没有注释
- 否则,对于每个标记(最后一个标记除外),使用RegExp
(从“/*”开始直到标记结束)来捕获整个注释内容(您可以在这里使用更复杂的RegExp来捕获注释中的更多数据)%r{/\*(.*)$}
char *myString = "a comment /* */";
更改此项:([\w\w\d\d]+)
对此:
([\w\w\d\d]+?)
这将导致正则表达式不贪婪,在看到下一次关闭时立即停止。(更新红宝石:)
另外,请注意[\w\w\d\d]
完全匹配任何字符,并且可以简单地编写为[\w\d]
。您也可以将主体与[^*\/]
匹配,这也可以避免上述通过关闭进行匹配的问题。(更新的红宝石:)更改此:([\w\w\d\d]+)
对此:
([\w\w\d\d]+?)
这将导致正则表达式不贪婪,在看到下一次关闭时立即停止。(更新红宝石:)
另外,请注意
[\w\w\d\d]
完全匹配任何字符,并且可以简单地编写为[\w\d]
。您也可以将主体与[^*\/]
匹配,这也可以避免上述通过关闭进行匹配的问题。(更新红宝石:)太棒了!我想要的是不贪婪。谢谢,太好了!我想要的是不贪婪。谢谢