修改正则表达式部分语法,减少语法树叶子,提高识别效率
2006-10-07 18:27
477 查看
原来使用的语法 <re> ::= <expr> { <expr> } | <re> '|' <re> <expr> ::= <term> | <term> '*' <term> ::= <label> | '(' <re> ')' <label> ::= <symbol> | '[' <range> { <range> } ']' | '[' '^' <range> { <range> } ']' <range> ::= <symbol> | <symbol> '-' <symbol> <symbol> ::= '.' | 0 .. n (any element of alphabet) | '/' <symbol>
根据原来使用的语法,一个symbol只能对应一个字符,得到的dfa每次只能处理一个字符。
如果改为
<symbol> ::= '.' | <re_char> { <re_char> } | '/' <symbol>
<re_char> ::= 0..n ( any element of alphabet )
这样可以把一个symbol对应到一个字符串。对于含有确定子串的正则表达式,可以大幅度减少语法树的叶子。
转换出来的dfa,含有更少的状态,还可以通过字符串而不是字符,达到批量处理。
相关文章推荐
- 8个你应该了解的正则表达式提高你的工作效率
- 提高效率的20个正则表达式
- 提高正则表达式效率的方法
- 8个你应该了解的正则表达式提高你的工作效率
- 更多提高正则表达式效率的方法
- 8个你应该了解的正则表达式提高你的工作效率
- js正则表达式的基本语法 精华部分,看后即懂
- python里预先编译正则表达式提高效率
- 在WORD中使用正则表达式进行替换操作提高编辑效率
- 正则表达式个人总结(二):正则表达式语法的深入理解第二部分
- 正则表达式的语法格式之模式修改符(?)
- python中通过预先编译正则表达式提高效率
- 正则表达式提高代码效率
- 20个正则表达式,包你能提高敲代码的效率。
- 善用Pattern提高你的应用处理正则表达式的效率(Java)
- [零基础学JAVA]Java SE应用部分-22.Eclipse及正则表达式使用 推荐
- java正则表达式语法
- 正则表达式语法
- 正则表达式分组语法
- Delphi 正则表达式语法(2): 或者与重复