在 Java 正则表达式中包含注释
我有一些复杂的正则表达式,我需要注释以提高可读性和维护。Java规范相当简洁,我挣扎了很长时间才能做到这一点。我终于发现了我的错误,并将其作为答案发布,但我很感激有关维护正则表达式的任何其他建议
作为一个例子,我想在一个简单的名称解析器中注释(patternS)的子组件:
String testTarget = "Waldorf T. Flywheel";
String patternS = "([A-Za-z]+)\\s+([A-Z]\\.)?\\s+([A-Za-z]+)";
Pattern pattern = Pattern.compile(patternS, Pattern.COMMENTS);
Assert.assertTrue(pattern.matcher(testTarget).matches());
编辑:我也会很感激(?x)格式的例子。
编辑:@geowa4有一个很好的建议,避免嵌入评论。Sinnce java和其他人已经为嵌入式注释提供了哪些有用的情况?(我想我有一个案例,但我有兴趣看到其他人)。
编辑:如下所述@mikej正则表达式不支持可选的初始井,并且会更好:
String patternS = "([A-Za-z]+)\\s+([A-Z]\\.\\s+)?([A-Za-z]+)";
但这最终会在初始位置提取空间