用中文 API 让正则表达式更易读写?
木兰语言重现项目中用到了不少正则表达式,其中不乏不那么一目了然的(Python实现): 标识符:r'\$?[_a-zA-Z\u4e00-\u9fa5][_a-zA-Z0-9\u4e00-\u9fa5]*' 双引号字符串: r'(\")((?<!\\)\\\1|.)*?\1' 字符串插值相关:r'\\\(([^\\\)]*)\\\)|`([^`]*)`' 由此想到是否有 API 能够构建正则表达式。找到 PythonVerbalExpressions,它首页上一个示例如下: verbal_expression. start_of_line(). find('http'). maybe('s'). find('://'). maybe('www.'). anything_but(' '). end_of_line() 对应正则: ^(http)(s)?(\:\/\/)(www\.)?([^\ ]*)$ 看起来的确比较可读,而且如果改为中文 API 的话,命名会更简短: 开头(). 寻找('http'). 或许('s'). 寻找('://'). 或许('www.'). 除了(' ')....