我想寫一個匹配任何單詞的正則表達式。 我使用[a-zA-Z]*
除了一些單詞,例如WORD1
和WORD2
。正則表達式匹配除flex中某些單詞外的任何單詞
因此somethingsomething
匹配,但文字WORD1
和WORD2
不會。在Flex中可能嗎?
我曾嘗試:
[a-zA-Z]*|[^"WORD1""WORD2]
和[a-zA-Z]*{-}["WORD1""WORD2"]
但既不工程。
(現在我知道爲什麼他們沒有工作,但我還是不知道解決的辦法。)
我想寫一個匹配任何單詞的正則表達式。 我使用[a-zA-Z]*
除了一些單詞,例如WORD1
和WORD2
。正則表達式匹配除flex中某些單詞外的任何單詞
因此somethingsomething
匹配,但文字WORD1
和WORD2
不會。在Flex中可能嗎?
我曾嘗試:
[a-zA-Z]*|[^"WORD1""WORD2]
和[a-zA-Z]*{-}["WORD1""WORD2"]
但既不工程。
(現在我知道爲什麼他們沒有工作,但我還是不知道解決的辦法。)
在法/柔性通常的方法是使用的模式和規則的組合選擇所需的行爲:
可以爲您呈現的情況編寫正則表達式。
爲了匹配除了一個字所有文字你可以寫:
w|wo|wor|word[a-z]+|([^w]|w[^o]|wo[^r]|wor[^d])[a-z]*
但作爲@Thomas和@rici指出,你有更好的解決方案(特別是當你 定義一個具體的問題) 。
例: 「計數除了字字所有字」 實際上是非常簡單的(使用托馬斯提案):
%%
int i;
word { }
[a-z]+ {i++;}
.|\n { }
<<EOF>> { printf("%d\n",i); return 0; }
%%
(未測試的)
[向前看符號](HTTP:// WWW .regular-expressions.info/lookaround.html)在Flex正則表達式中不可用? –
@bobblebubble:[它看起來不太好](http://stackoverflow.com/q/22326399/20670) –
我真的不明白你在這裏問什麼。 '[a-zA-Z] *'與'WORD1'不匹配,儘管它會匹配'WORD'。遇到WORD1時你想發生什麼?一個錯誤?一個不同的令牌類型?兩個令牌?只有當我們知道你想掃描'WORD1'的結果時,我們才能提供如何實現它的建議。 – rici