我有一些复杂的正则表达式,为了便于阅读和维护,需要对其进行注释。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有一个很好的建议,可以避免嵌入注释。自从Java和其他人提供嵌入式注释以来,在什么情况下它们有用?(我想我有一个案子,但我很想见其他人)。
编辑:如下@mikej所述,正则表达式不支持可选的初始格式,并且会更好:
String patternS = "([A-Za-z]+)\\s+([A-Z]\\.\\s+)?([A-Za-z]+)";
但这最终会在最初提取空间