【发布时间】:2010-11-25 14:30:06
【问题描述】:
我有一些复杂的正则表达式,我需要对其进行注释以提高可读性和维护性。 Java 规范相当简洁,我为此努力了很长时间。我终于发现了我的错误并将其作为答案发布,但我将不胜感激有关维护正则表达式的任何其他建议
作为一个例子,我想在一个简单的名称解析器中注释子组件(模式S):
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 有一个很好的建议,可以避免嵌入 cmets。由于 java 和其他人已经为嵌入式 cmets 提供了它们在哪些情况下有用? (我想我有一个案例,但我很想看看其他人)。
编辑:如下所述@mikej,正则表达式不支持可选的初始良好,最好是:
String patternS = "([A-Za-z]+)\\s+([A-Z]\\.\\s+)?([A-Za-z]+)";
但这最终会在初始时提取空间
【问题讨论】: