正则表达式的解释与评估
正则表达式存在的问题
正则表达式在实际使用中存在一些挑战,主要包括以下几点:
1. 无法利用领域知识 :抽象概念领域通常通过隐喻映射从直接基于经验的领域构建。正则表达式是一种形式化符号,与用户想要处理的领域缺乏紧密映射,这使得新用户难以掌握。而且,表达式求值器的行为没有清晰的心理模型。
2. 角色表达性不足 :普通正则表达式很少有标识能帮助用户识别与输入字符串相关部分匹配的正则表达式部分。用户通常通过使用对应输入主要部分的子表达式,并使用缩进直观地表示子表达式的角色来解决这个问题。
3. 易出错 :正则表达式中,不同选择之间共享部分和非共享部分没有明确划分,因此很容易出错,并且对可匹配的变化贡献更大。
解释表示及其计算
为了解决上述问题,提出了几种解释表示方法,旨在突出正则表达式的组成结构并识别常见格式。
1. 结构分析与分解
- 分组字符序列 :将不包含括号表达式(如 (···) 、 [···] 或 | )的最大连续字符序列分组到括号表达式中。这一步本质上是对正则表达式字符流进行分词。例如,对于表达式 <\s* [aA] \s+ [hH] [rR] [eE] [fF] =f\s*>\s*<\s* [iI] [mM] [gG] \s+ [sS] [rR] [cC] =f\s*> [^<
超级会员免费看
订阅专栏 解锁全文
1231

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



