实用正则表达式技巧
1. 正则表达式的平衡之道
编写良好的正则表达式需要在多个方面取得平衡:
- 精准匹配 :只匹配你想要的内容。
- 易于管理和理解 :让正则表达式具有可读性和可维护性。
- 高效性(针对NFA) :创建能让引擎快速得出匹配或不匹配结果的正则表达式。
这些考虑因素通常依赖于具体的上下文。例如,在命令行快速查找信息时,可能不需要过于精确的匹配;但在重要程序中,就值得花费时间和精力编写复杂但准确的正则表达式。效率也是上下文相关的,像检查命令行参数的某个长正则表达式,虽然效率低,但由于执行次数少,对整体影响不大;若用于检查大文件的每一行,效率问题就会凸显。
2. 短示例分析
2.1 续行匹配
之前的续行示例中,正则表达式 ^ \w+ =.+(\\ \n.,) 用传统NFA匹配以下内容时不能正确匹配两行:
SRC=array.c builtin.c eval.c field.c gawkmisc.c io.c main.c \
missing.c msg.c node.c re.c version.c
问题在于第一个 .+ 匹配越过了反斜杠,导致 (\\\n.+)+ 无法正确匹配。解决方法是将每个点改为 [^\n \\] ,得到新的正则表达
超级会员免费看
订阅专栏 解锁全文
10万+

被折叠的 条评论
为什么被折叠?



