2013-03-25 51 views
1

我使用flex,linux/unix不是Adobe類型來生成小型掃描程序。在過去,我一直使用靜態搜索字符串。我現在想通過提供一個字符串通過getopt提供一個命令行提供的搜索字符串,然後能夠使用它進行搜索。命令行參數以flex的形式搜索字符串

搜索的老辦法是:

.*"_"\n  ECHO; 

要查找以下劃線端線。

現在我想尋找這樣說:

.*<arbitrary string>.*\n ECHO; 

我不知道怎麼去撓接受<arbitrary string>。我可以通過getopt獲取它,但我無法使用flex來接受我的語法。

我正在做的是一個特殊的目的非常有限的grep我遇到的一個特殊問題。

任何幫助,將不勝感激。

+0

哎呀,你的處理器只是吃了我的<搜索字符串>項目的問題。 – user2207980 2013-03-25 15:01:00

+0

格式修復..你能給一個完整的工作材料的例子嗎? (以下劃線結尾的行) – hek2mgl 2013-03-25 15:05:06

回答

1
.*\n { if(strstr(yytext, "arbitrary string")) ECHO; else REJECT; } 

如果yytext不包含「任意字符串」,則REJECT語句將跳至下一條規則。這當然不會提供與在編譯時已知搜索字符串相同的性能。如果你正在實現你自己的grep程序,glibc中的regcomp()/ regexec()可能比flex更快。