我们都很熟悉简单的文本查找——按下Ctrl+F,输入关键词就能找到想要的内容。 而正则表达式则更进一步,它能帮你寻找特定‘模式’的信息。 就像我们虽然不一定记得某个公司的完整电话号码, 但只要看到‘三位数字-三位数字-四位数字’的组合,比如415-555-1234,就能认出这是一个电话号码,而4,155,551,234显然不是。
尽管正则表达式功能强大,能节省大量时间,但除了程序员,很少有人真正了解它。 事实上,许多常用软件(如Word或LibreOffice)都支持正则表达式搜索,只是多数人并未尝试。 技术作家Cory Doctorow甚至认为,正则表达式应该比编程更早被教授——因为它能让复杂任务变得简单高效。 别人需要反复操作的工作,你可能只需输入几个字符就能完成,既省时又避免错误。
接下来,我们将通过实际例子展示正则表达式的优势:先尝试不用它解决问题,再对比使用它如何让工作变得更轻松。 从基础匹配到更高级的应用,你会看到这个小工具蕴含的巨大能量。
正则表达式是一种强大的文本匹配工具,它能帮助我们在目标字符串中快速定位符合特定模式的内容。 为了让大家在学习过程中即时实践,我们推荐使用在线测试工具(http://tool.oschina.net/regex/)。
接下来,让我们通过一个最简单的例子,来体验正则表达式的魅力——这可能是你第一次接触正则表达式, 所以我们选择了一个极其基础的示例来开始。
目标字符串: this is a book
正则表达式: book
不要被那些充满特殊符号的正则表达式吓到——眼前这个看似简单的模式,同样是一个真正的正则表达式。
本质上,正则表达式就是在描述字符串的特征,那些特殊符号(如\d
、|
、.*
)只是为了更精确地表达复杂的字符串规律。
本教程将专注于实际应用中最常用的功能,用简单易懂的方式教你描述各种字符串模式。 我们特意避开了那些晦涩难懂的规则(如贪婪匹配、位置指定等),因为在日常使用中, 绝大多数需求都能用基础而清晰的正则表达式解决。