1

私はLEXで、特別なシンボルまでコードを解析したいのだろうかと思っていました。

例えば:$display("Hello World");

ここで、取得したいのですが$display("Hello World");.

私はすでにこれを試しました: \$"display".*[^;]、うまくいかなかったようです。

どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

1

.任意の文字に一致し、クリーネ閉包はその前にあるものの*多くに一致します。この場合、一致displayしているのに他の文字のリストが続きます。これには、キャプチャしたいビットとセミコロンも含まれます。

明らかな修正は、式のその部分を削除し、クリーネ閉包を[^;]式の後に移動することです。これは、「そうでない任意の文字の複数のインスタンスに一致する」と言います;。これには、部分式の前後に親が必要になる場合があります(字句解析プログラムによって異なるため、pricese構文を思い出せません)。

または\$"display"([^;])*_\$"display"[^;]*

于 2013-01-21T15:42:37.617 に答える