木兰语言重现项目中用到了不少正则表达式,其中不乏不那么一目了然的(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(