使用lex正则表达式提取子字符串

时间:2013-03-27 07:26:22

标签: regex lex

是否可以使用lex正则表达式提取子字符串,就像使用sed一样?

例如

sed -e 's/[0-9]*\([a-z]*\)[0-9]*/\1/'

将从foo中提取34234foo777或从bar提取123bar456

是否可以像这样使用lex:

[0-9]*\([a-z]*\)[0-9]*     printf("alphabetical substring is %s\n", /*what?? \1 ??*/);

没有通过普通C解析yytext

1 个答案:

答案 0 :(得分:0)

考虑到[0-9] is numeric and [a-z]是alpha

,使用Yacc有一个解决方案

所以你的语法是:

stmt : NUMERIC ALPHA NUMERIC    printf("alphabetical substring is %s\n", $2)
     ;

由lex给出的ALPHA和NUMERIC