我正在尝试在objective-C中的字符串中查找并处理'java-style'注释。
我有几个正则表达式片段几乎可以工作,但我陷入了一个障碍:不同的选项似乎使不同的样式工作。
例如,我使用它匹配:
NSArray* matches = [[NSRegularExpression regularExpressionWithPattern:expression options:NSRegularExpressionAnchorsMatchLines error:nil] matchesInString:string options:0 range:searchRange];
此处的选项允许我成功查找和处理单行注释(//)但不能多行(/ * * /),如果我将选项更改为 NSRegularExpressionDotMatchesLineSeparators ,那么我可以使多行工作正常但我找不到单行评论的“结束”。
我想我真的需要点匹配行分隔符,但是我需要一种更好的方法来查找单行注释的结尾?
我到目前为止的正则表达式是:
@"/\\*.*?\\*/"
@"//.*$"
很清楚看到点是否与行分隔符匹配,然后第二行(单行)从未“完成”,但我该如何解决这个问题呢?我发现了一些关于单行的建议,更像是:
@"(\/\/[^"\n\r]*(?:"[^"\n\r]*"[^"\n\r]*)*[\r\n])"
但这似乎并不“有效”!
提前感谢任何指针。
答案 0 :(得分:0)
所以事实证明我的例子非常接近它只是因为某种原因我在那里有一些不需要的反斜杠,它现在写着:
@"(//[^\"\n\r]*(?:\"[^\"\n\r]*\"[^\"\n\r]*)*[\r\n])"
(即在Objective-C的代码中)。为了澄清我自己的观点,我正在使用DotMatchesLineSeparator,现在这正如我所期望的那样。