存档

2018 年 09 月 - 2 文章

《提问的智慧》精读注解版

大学期间,我看过《大教堂与集市》、《提问的智慧》以及影片《操作系统的革命》,它们对我后来的职业生涯产生了重要的影响。其中《提问的智慧》是篇长文,几十分钟就能看完,此文作者 Eric Steven Raymond(ESR)也是《大教堂与集市》的作者,著名的黑客,开源先驱。他在 2001 年第一次发布《提》后一直对此文进行着更新维护,以保证它尽量适用于最新的情况,比如与时俱进地加入新章节、修复 URL 地址、更新翻译版链接等。 今天我又读了一遍《提》,作为一个开源项目的维护者,感慨万千。下文是我对《提》的 部分 注解,如果你时间有限,可以通过该注解版进行有限的了解。但还是强烈建议你精读一遍《提问的智慧》,英语好的同学可直接看原文 How To Ask Questions The Smart Way。 下面按照原文章节进行注解,标题即原文章节标题。再次说明,我仅仅是注解了《提》中的部分内容,有时间的话请一定要看原文。 声明 该小节 ESR 建议项目维护者在用户指南文档的显著位置标注: 本指南不提供此项目的实际支持服务! 我们已经深刻领教到少了上述声明所带来的痛苦。因为少了这点声明,我们不停....

More...

Java 正则中的非捕获组

正则表达式中的非捕获组(non-capturing group)用于匹配但不“保存”匹配结果,出现在正则表达式模式中的 (?:pattern) 这部分就是非捕获组。 我试了几个在线的正则表达式测试工具,返回的匹配结果都是“整个组”,不是非捕获组。 Java 中 Matcher#group() 返回的是 group(0),也是整个匹配结果,如果要返回第一个非捕获组,需要用 group(1)。 Pattern pattern = Pattern.compile("([0-9]+)(?:st|nd|rd|th)?"); Matcher matcher = pattern.matcher("1st 2nd 3 4th"); while (matcher.find()) { System.out.printf("%3s %s\n", matcher.group(), matcher.group(1)); } 输出: 1st 1 2nd 2 3 3 4th 4 另外,使用非捕获组时需要注意结尾的 ?,在上面例子中 ([0-9]+)(?:st|nd|rd|th)? 说明该非捕获组是可选的,如....

More...