我正在尝试在 Objective-C 中的字符串中查找和处理“java-style”注释。
我有一些几乎可以工作的正则表达式片段,但我遇到了一个障碍:不同的选项似乎使不同的样式起作用。
例如,我使用它来匹配:
NSArray* matches = [[NSRegularExpression regularExpressionWithPattern:expression options:NSRegularExpressionAnchorsMatchLines error:nil] matchesInString:string options:0 range:searchRange];
此处的选项允许我成功查找和处理单行注释 (//) 但不是多行注释 (/* */),如果我将选项更改为NSRegularExpressionDotMatchesLineSeparators那么我可以使多行工作正常但我找不到“结束”的单行注释。
我想我真的需要点匹配行分隔符,但我需要一种更好的方法来找到单行注释的结尾?
我到目前为止的正则表达式是:
@"/\\*.*?\\*/"
@"//.*$"
很清楚 dot 是否与行分隔符匹配,然后第二个(单行)永远不会“完成”,但我该如何解决这个问题?我发现一些关于单行的建议更像:
@"(\/\/[^"\n\r]*(?:"[^"\n\r]*"[^"\n\r]*)*[\r\n])"
但这似乎根本不起作用!
在此先感谢您的任何指点。